在 PowerShell 中比较文件哈希

Compare File Hash in PowerShell

我是 Powershell 的新手,但我正在尝试编写一个简单的函数来比较两个使用哈希值的文件。我使用以下方法得到了一些意想不到的结果:

$hash1 = Get-FileHash $source | Select-Object Hash
Write-Host("    hash1 : " + $hash1)

returns:hash1:@{Hash=93725215281E09E21317EA88E03B246AE13890ED96BB0B842A05A5E4969A4BFA}

$hash2 = Get-FileHash $destination | Select-Object Hash
Write-Host("    hash2 : " + $hash2)

returns:hash2:@{Hash=93725215281E09E21317EA88E03B246AE13890ED96BB0B842A05A5E4969A4BFA}

$hashdiff = ($hash1 -eq $hash2)
Write-Host("   hashdiff : " + $hashdiff)

returns:散列差异:假

我确定这是一个明显的错误,但是有人可以让我摆脱痛苦并帮助我理解为什么相等运算符没有按预期工作吗?

非常感谢

Get-FileHash $source | Select-Object Hash$destination 相同)return 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