param (
[string]$FolderPath, # Путь к папке, в которой нужно собирать контрольные суммы
[string]$LogFile = "checksums.log" # Имя лог-файла для сохранения результатов
)
# Убедимся, что путь к папке существует
if (-Not (Test-Path $FolderPath)) {
Write-Host "Путь не найден: $FolderPath"
exit
}
# Получаем список всех файлов с расширением "exe" в папке и всех её подкаталогах
$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"