所以我有两个服务器和两个文件夹,它们应该包含相同的 *.jar,这意味着相同的哈希。我试图比较前2罐从第一个到2罐从第二个服务器。使用下面的语句总是返回Different,因为它不是单独获取每个文件。
$FileHash1 = (Get-FileHash '\\server1\c$\some_folder\*jar').Hash
$FileHash2 = (Get-FileHash '\\server2\c$\some_folder\*jar').Hash
if($FileHash1 -eq $FileHash2) {
Write-Host "Equal"
} Else {
Write-Host "Different"
}
我明白,在某个地方应该有foreach,但似乎找不到如何确切地使它的工作。
3条答案
按热度按时间7nbnzgx91#
所以你可以使用
Group-Object
来实现,将的哈希数组分组,如果有一个组的.Count
是1
,那么你就可以确定文件夹之间存在差异。假设源文件夹没有重复。另一种方法是使用为此设计的cmdlet:
scyqe7ek2#
正如注解中提到的,你可以使用
Compare-Object
来比较两个集合--如果它们是对称的,Compare-Object
不会输出任何东西,所以测试不对称性就像测试 * 任何输出 * 一样简单:如果需要测试多个服务器,请选择一个作为参考,并将所有其他服务器与之进行比较:
cwtwac6a3#
如果您的文件具有相同的名称,您可以创建一个文件名列表(实际上是一个数组),并比较它们: