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"