Powershell Get-FileHash未按预期工作

Powershell Get-FileHash未按预期工作,powershell,Powershell,我正在尝试使用Get FileHash检查文件MD5哈希与哈希数组。考虑这个简单的代码: $dir = Get-ChildItem -Recurse 'C:\Files' $md5hash = @( '6edaaec9c5b9cea3f035065d7283ca07', '023c80233d32b33128841038491af8c7', 'f58d26a3fe697efd84c2a841140bc524') $dir | ForEach-Object { if ($md5ha

我正在尝试使用
Get FileHash
检查文件MD5哈希与哈希数组。考虑这个简单的代码:

$dir = Get-ChildItem -Recurse 'C:\Files'

$md5hash = @(
'6edaaec9c5b9cea3f035065d7283ca07', 
'023c80233d32b33128841038491af8c7',
'f58d26a3fe697efd84c2a841140bc524')

$dir | ForEach-Object { 
    if ($md5hash -contains (Get-FileHash $_.FullName -Algorithm MD5)) 
    {
        Write-Output "Match found." 
    } 
    else 
    {
        Write-Output "No match.
    }
}
始终返回“不匹配”,但我可以手动验证哈希是否正确:

$dir -contains '6edaaec9c5b9cea3f035065d7283ca07'

代码有什么问题?

Get FileHash
不返回字符串,而是返回一个对象,只需运行一次即可轻松验证:

PS> Get-FileHash test.txt -Algorithm md5

Algorithm Hash                             Path
--------- ----                             ----
MD5       B53F079809559E4E8C2B13863B153ABF Home:\test.txt
因此,将代码更改为

$md5hash -contains (Get-FileHash $_ -Algorithm MD5).Hash

Get FileHash
不返回字符串,而是返回一个对象,只需运行一次即可轻松验证:

PS> Get-FileHash test.txt -Algorithm md5

Algorithm Hash                             Path
--------- ----                             ----
MD5       B53F079809559E4E8C2B13863B153ABF Home:\test.txt
因此,将代码更改为

$md5hash -contains (Get-FileHash $_ -Algorithm MD5).Hash