|
Компьютерный форум 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 | Цитировать Я же правильно понимаю если для XP сделать, то и на 7 взлетит?
|
Отправлено: 16:36, 04-01-2025 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1231
|
Профиль | Отправить PM | Цитировать Цитата alexdomovoi:
![]() Вот, функция: function get-fhash($x){ $hash = new-object Security.Cryptography.SHA256CryptoServiceProvider $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() } $f = '.\explorer.exe' get-fhash $f |
|
------- Отправлено: 18:19, 04-01-2025 | #22 |
fascinating rhythm Сообщения: 6679
|
Профиль | Отправить PM | Цитировать Реально проверил на Windows XP sp3.
Там отсутствует certutil.exe в стандартной поставке, а на выдаёт ошибки New-Object : Исключение при вызове ".ctor" с "0" аргументами: "The specified cryptographic algorithm is not supported on this platform." строка:1 знак:11 + new-object <<<< System.Security.Cryptography.SHA256CryptoServiceProvider + CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvocationException + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand или New-Object : Не удается найти тип [System.Security.Cryptography.SHA256CryptoServiceProvider]: убедитесь в том, что сборка, содержащая этот тип, загружена. строка:4 знак:19 + $hash = new-object <<<< System.Security.Cryptography.SHA256CryptoServiceProvider + CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand $7z = 'C:\Program Files\7-Zip\7z.exe' $report = @() dir $env:windir\system32\*.exe |% { $props = @{ Path = $_.fullname Checksum = (& $7z h -scrcsha256 $_.fullname) -match 'for data' -replace '.*\s+' -as [string] } $obj = New-Object -TypeName PSObject -Property $props $report += $obj } $report $report = @() dir $env:windir\system32\*.exe |% { $a = [Security.Cryptography.SHA256]::Create() $props = @{ Path = $_.fullname Checksum = ($a.ComputeHash([IO.File]::ReadAllBytes("$($_.fullname)")) |% {$_.ToString('x2')}) -join '' } $obj = New-Object -TypeName PSObject -Property $props $report += $obj } $report |
------- Последний раз редактировалось DJ Mogarych, 04-01-2025 в 20:36. Отправлено: 20:26, 04-01-2025 | #23 |
Crazy Сообщения: 1231
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Но если работает: то функция может быть такой: |
|
------- Отправлено: 00:48, 05-01-2025 | #24 |
fascinating rhythm Сообщения: 6679
|
Профиль | Отправить PM | Цитировать Да, так работает.
|
------- Отправлено: 05:54, 05-01-2025 | #25 |
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
единственное подскажите как этот результат сразу в файл загнать? а так что бы он не только в папке system32 но и в подпапках всех сразу собрал по маске контрольные суммы и выдал с путями их полными. а то он только в system32 exe дает, а в подпапках как? Спасибо! |
|
Отправлено: 16:29, 05-01-2025 | #26 |
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать проверяю SHA 256
а суммы у файлов разные...... |
Отправлено: 16:40, 05-01-2025 | #27 |
Crazy Сообщения: 1231
|
Профиль | Отправить PM | Цитировать Цитата alexdomovoi:
Цитата alexdomovoi:
Цитата alexdomovoi:
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 -rec -filt "*.exe"|%{ new-object PSObject -Property @{Path = $_.fullname;SHA256 = get-fhash $_.fullname} } |convertto-csv -notyp |out-file out.csv -enc utf8 |
|||
------- Последний раз редактировалось YuS_2, 08-01-2025 в 22:28. Причина: поправлен код для корректной работы get-fhash $_ -> get-fhash $_.fullname + ещё правка для рекурсии Отправлено: 19:02, 05-01-2025 | #28 |
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
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 $_} } |convertto-csv -notyp |out-file out.csv -enc utf8 » тишина какая то, или неправильно что то делаю? |
Последний раз редактировалось alexdomovoi, 06-01-2025 в 13:55. Отправлено: 11:46, 06-01-2025 | #29 |
Crazy Сообщения: 1231
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 14:49, 06-01-2025 | #30 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|