Сравните хэш файла в PowerShell
Я новичок в Powershell, но пытаюсь написать простую функцию для сравнения двух файлов с использованием их хэшей. Я получаю неожиданные результаты, используя следующее:
$hash1 = Get-FileHash $source | Select-Object Hash
Write-Host(" hash1 : " + $hash1)
возвращает: hash1: @{Hash=93725215281E09E21317EA88E03B246AE13890ED96BB0B842A05A5E4969A4BFA}
$hash2 = Get-FileHash $destination | Select-Object Hash
Write-Host(" hash2 : " + $hash2)
возвращает: hash2: @{Hash=93725215281E09E21317EA88E03B246AE13890ED96BB0B842A05A5E4969A4BFA}
$hashdiff = ($hash1 -eq $hash2)
Write-Host(" hashdiff : " + $hashdiff)
возвращает: hashdiff: False
Я уверен, что это очевидная ошибка, но может ли кто-нибудь избавить меня от страданий и помочь мне понять, почему оператор равенства работает не так, как ожидалось?
Спасибо заранее
1 ответ
Линии Get-FileHash $source | Select-Object Hash
(то же самое для $destination
) вернуть PSObjects, содержащие свойство Hash
.
Это то свойство, которое вы хотите сравнить, так что либо
$hashdiff = ($hash1.Hash -eq $hash2.Hash)
Или получите значения хеш-строки и сравните их:
$hash1 = Get-FileHash $source | Select-Object -ExpandProperty Hash
Write-Host(" hash1 : " + $hash1)
$hash1.gettype().fullname
$hash1
$hash2 = Get-FileHash $destination | Select-Object -ExpandProperty Hash
Write-Host(" hash2 : " + $hash2)
$hashdiff = ($hash1 -eq $hash2)
Write-Host(" hashdiff : " + $hashdiff)
Результат:
hash1 : 6A9F599704B0895581ED47805F80137120D14E824DA19A78C2808576A8A0405B hash2 : 6A9F599704B0895581ED47805F80137120D14E824DA19A78C2808576A8A0405B hashdiff : True