Сравнить файл Ha sh в PowerShell - PullRequest
       6

Сравнить файл Ha sh в PowerShell

1 голос
/ 13 февраля 2020

Я очень плохо знаком с 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 Ответ

1 голос
/ 13 февраля 2020

Строки Get-FileHash $source | Select-Object Hash (то же самое для $destination) возвращают объекты PSO, содержащие свойство Hash.

Это то свойство, которое вы хотите сравнить, поэтому либо выполните

$hashdiff = ($hash1.Hash -eq $hash2.Hash)

Или получите строковые значения ha sh и сравните их:

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...