我在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價值平等」 :-) –