我在PowerShell来阵列的对象。每个数组都包含一个对象数组。这些对象有两个属性:如何找到,如果Powershell的Array包含其他阵列
名称:字符串
编号:GUID
第一阵列中有4413点的对象,第二个4405的计数是无关紧要的,但我只提到它们要注意的是Array1和Array2的内容是不同的。
这里是我当前的代码(伪):
#Fill Array1
$Array1 = Fill-Array1
#Fill Array2
$Array2 = Fill-Array2
#Loop through the arrays and write out the names of all items in Array2 that are different than Array1
ForEach($Val in $Array2)
{
$Name = $Val.Name
If($Array1 -notcontains $Val) //this does not work
{
Write-Host $Name
}
}
什么是您在数组1对象存在的正确方法是什么?我唯一的选择是做一个嵌套循环吗?
更新,使用从下面Manu P答案,以下是我是如何实现的解决方案:
#Fill Array1
$Array1 = Fill-Array1
#Fill Array2
$Array2 = Fill-Array2
#Compare the arrays
$ComparedResults = Compare-Object -ReferenceObject $Array1 -DifferenceObject $Array2 #I left out the -IncludeEqual param because I don't care about those results
ForEach($Result in $ComparedResults)
{
If($Result.SideIndicator -eq "=>") #the value in Array2 is different than Array1
{
$Val = $Result.InputObject
Write-Host $Val.Name
}
}
当我使用2个阵列与他们只是一些随机数此完全相同的方法,它完美的作品。也许它与数组中的对象类型有关? – cet51
@CoryEtmund谷歌“参考平等VS价值平等” :-) –