我正在对一个位置(原始文件夹)中的所有文件进行哈希处理,并将哈希值写入变量,然后对另一个位置(目标文件夹)中的所有文件执行相同操作:
$origin = Get-ChildItem .\Test1 | Get-FileHash | Format-Table -Property Hash -HideTableHeaders
$destination = Get-ChildItem .\Test2 | Get-FileHash | Format-Table -Property Hash -HideTableHeaders
然后我将它们与 Compare-Object 进行比较,如下所示:
Compare-Object $origin $destination
现在在我的测试中我故意有偏差,所以当上面的代码没有返回差异时,我知道我有问题。
然后我发现如果我执行以下操作,则哈希值不存在:
PS>写主机 "$origin" Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands。 Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData
但是,如果我只是键入以下内容并按 Enter,则存在哈希值(如我所愿):
PS> $原点 6B86B273FF34FCE19D6B804EFF5A3F5747ADA4EAA22F1D49C01E52DDB7875B4B D4735E3A265E16EEE03F59718B9B5D03019C07D8B6C51F90DA3A666EEC13AB35 4E07408562BEDB8B60CE05C1DECFE3AD16B72230967DE01F640B7E4729B49FCE
我假设当我使用Compare-Object
时,我的变量没有像我预期的那样呈现散列值。
有谁知道发生了什么或有什么建议?这用于确保文件从原始位置移动到目标位置(这是我正在处理的脚本中的一项检查)。我保留这个纯粹的 PowerShell,这意味着 noxcopy
或robocopy
.