|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Массовое определение контрольных сумм файлов |
|
|
PowerShell - Массовое определение контрольных сумм файлов
|
|
Старожил Сообщения: 184 |
Добрый день! Хочу в папке Windows всем exe файлам определить контрольные суммы (в дальнейшем и не только в Windows). Через PowerShell:
param (
[string]$FolderPath, # c:\windows
[string]$LogFile = "c:\1\checksums.log"
)
if (-Not (Test-Path $FolderPath))
{
Write-Host "Путь не найден: $FolderPath"
exit
}
$files = Get-ChildItem -Path $FolderPath -Recurse -Filter *.exe
$logFileStream = New-Object System.IO.StreamWriter($LogFile, $false)
foreach ($file in $files) {
try {
$hash = Get-FileHash -Path $file.FullName -Algorithm SHA256
$logEntry = "{0} {1}" -f $hash.Hash, $file.FullName
$logFileStream.WriteLine($logEntry)
Write-Host "Контрольная сумма для $($file.FullName): $($hash.Hash)"
} catch {
Write-Host "Ошибка при обработке файла $($file.FullName): $_"
}
}
$logFileStream.Close()
Write-Host "Результаты сохранены в $LogFile"
Цитата:
Цитата:
|
|||
|
Отправлено: 13:19, 28-12-2024 |
|
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать А там может путь к файлу прописать?
|
|
Отправлено: 19:08, 06-01-2025 | #31 |
|
Crazy Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата alexdomovoi:
|
|
|
------- Отправлено: 20:42, 06-01-2025 | #32 |
|
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
можно и прописать... можно и рядом со скриптом его поискать... тут уж, чего больше душа пожелает... » Да, спасибо с файлом разобрался, подскажите, а нельзя сюда применить из первого сообщения Цитата:
по хешу разному разобрался утилита certutil дает хеш тот который дает и скрипт, а вот почему 7zip дает другой при выборе SHA256 непонятно ну и ладно, у меня 7zip в системе нет. |
|
|
Последний раз редактировалось alexdomovoi, 07-01-2025 в 04:42. Отправлено: 04:37, 07-01-2025 | #33 |
|
Crazy Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата alexdomovoi:
Цитата alexdomovoi:
Но если хочется, то проблем никаких нет: param (
[string]$FolderPath, # c:\windows
[string]$LogFile = "c:\1\checksums.log"
)
if (-Not (Test-Path $FolderPath))
{
Write-Host "Путь не найден: $FolderPath"
exit
}
function get-fhash($x){
$hash = [security.cryptography.sha256]::create()
$file = gi $x
$stream = $file.openread()
$strb = new-object Text.StringBuilder
foreach($byte in $hash.computehash($stream)){
$null = $strb.append($byte.tostring('x2'))
}
$stream.close()
return $strb.tostring()
}
$files = dir $FolderPath -rec -filt "*.exe"
$files|%{
new-object PSObject -Property @{Path = $_.fullname;SHA256 = get-fhash $_.fullname}
} |convertto-csv -notyp|out-file $LogFile -enc utf8
|
||
|
------- Отправлено: 12:29, 07-01-2025 | #34 |
|
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать Резюмирую:
Проверил на XP-7 PowerShell 2.0 param (
[string]$FolderPath, # c:\windows
[string]$LogFile = "c:\1\checksums.log"
)
if (-Not (Test-Path $FolderPath))
{
Write-Host "Путь не найден: $FolderPath"
exit
}
function get-fhash($x){
$hash = [security.cryptography.sha256]::create()
$file = gi $x
$stream = $file.openread()
$strb = new-object Text.StringBuilder
foreach($byte in $hash.computehash($stream)){
$null = $strb.append($byte.tostring('x2'))
}
$stream.close()
return $strb.tostring()
}
$files = dir $FolderPath -rec -filt "*.exe"
$files|%{
new-object PSObject -Property @{Path = $_.fullname;SHA256 = get-fhash $_.fullname}
} |convertto-csv -notyp|out-file $LogFile -enc utf8
Цитата:
вот этот вариант на XP-7 PowerShell 2.0: function get-fhash($x){
$hash = [security.cryptography.sha256]::create()
$file = gi $x
$stream = $file.openread()
$strb = new-object Text.StringBuilder
foreach($byte in $hash.computehash($stream)){
$null = $strb.append($byte.tostring('x2'))
}
$stream.close()
return $strb.tostring()
}
dir $env:windir\system32\*.exe -rec|%{
new-object PSObject -Property @{Path = $_.fullname;SHA256 = get-fhash $_.fullname}
} |convertto-csv -notyp |out-file c:\1\out.csv -enc utf8
|
|
|
Отправлено: 10:46, 08-01-2025 | #35 |
|
Crazy Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата alexdomovoi:
Цитата alexdomovoi:
param (
[string]$FolderPath = "c:\windows", # c:\windows
[string]$LogFile = "c:\1\checksums.log"
)
...
Цитата alexdomovoi:
Так он мог себя вести до того, как я его поправлял... если там в коде вызов функции был таким: а не как сейчас: |
|||
|
------- Последний раз редактировалось YuS_2, 08-01-2025 в 15:09. Отправлено: 15:04, 08-01-2025 | #36 |
|
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
|
Отправлено: 19:39, 08-01-2025 | #37 |
|
Crazy Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата alexdomovoi:
Цитата:
- надо поменять на это: Ну или использовать тот последний вариант скрипта, где путь к каталогу можно указывать в качестве параметра скрипта. |
||
|
------- Отправлено: 22:23, 08-01-2025 | #38 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - Массовое переименование файлов | Super_Kolobok | Скриптовые языки администрирования Windows | 4 | 19-05-2024 16:28 | |
| Программы для сверки контрольных сумм | KaSpieC 666 | Хочу все знать | 17 | 16-12-2014 18:39 | |
| CMD/BAT - Сравнение контрольных сумм md5 | vodka | Скриптовые языки администрирования Windows | 11 | 09-01-2013 07:11 | |
| Прочие - Программы для подсчёта контрольных сумм файлов | ALEXEY_DFD | Программное обеспечение Windows | 14 | 18-11-2011 15:30 | |
| C/C++ - Получение контрольных сумм файлов (MD5, и т.д.) и их проверка в Online-сервисах | Drongo | Программирование и базы данных | 49 | 30-08-2010 18:39 | |
|