alexdomovoi
28-12-2024, 13:19
Добрый день! Хочу в папке 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"
На windows 10 вроде как делает но выходит ошибка (которая не мешает проведению контроля целостности):
Test-Path : Не удается привязать аргумент к параметру "Path", так как он представляет собой пустую строку.
строка:1 знак:21
+ if (-Not (Test-Path $FolderPath))
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidData: (Very Happy [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Test
PathCommand
На 7 и XP пытается делать но результата ноль ошибка другого формата:
Test-Path : Не удается привязать аргумент к параметру "Path", так как он представляет собой пустую строку.
строка:5 знак:20
+ if (-Not (Test-Path <<<< $FolderPath))
+ CategoryInfo : InvalidData: (Very Happy [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Test
PathCommand
Ошибка при обработке файла C:\windows\explorer.exe: Имя "Get-FileHash" не распознано как имя командлета, функции, файла
скрипта или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после че
го повторите попытку.
Ошибка при обработке файла C:\windows\hh.exe: Имя "Get-FileHash" не распознано как имя командлета, функции, файла скрипт
а или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего пов
торите попытку.
Подскажите, что подправить, что бы взлетело? Спасибо!
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"
На windows 10 вроде как делает но выходит ошибка (которая не мешает проведению контроля целостности):
Test-Path : Не удается привязать аргумент к параметру "Path", так как он представляет собой пустую строку.
строка:1 знак:21
+ if (-Not (Test-Path $FolderPath))
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidData: (Very Happy [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Test
PathCommand
На 7 и XP пытается делать но результата ноль ошибка другого формата:
Test-Path : Не удается привязать аргумент к параметру "Path", так как он представляет собой пустую строку.
строка:5 знак:20
+ if (-Not (Test-Path <<<< $FolderPath))
+ CategoryInfo : InvalidData: (Very Happy [Test-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.Test
PathCommand
Ошибка при обработке файла C:\windows\explorer.exe: Имя "Get-FileHash" не распознано как имя командлета, функции, файла
скрипта или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после че
го повторите попытку.
Ошибка при обработке файла C:\windows\hh.exe: Имя "Get-FileHash" не распознано как имя командлета, функции, файла скрипт
а или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего пов
торите попытку.
Подскажите, что подправить, что бы взлетело? Спасибо!