Suchen Sie nach Elementen in Array1, aber NICHT in Array2
Ich habe zwei Computerlisten aus zwei verschiedenen Werkzeugen extrahiert,Array1
undArray2
.
Jetzt muss ich die extrahieren, die in sindArray1
, aber nicht inArray2
.
Ich habe es geschafft, alle passenden zu finden:
$matchingComp = @()
foreach ($SCCMcomputer in $SCCMcomputers) {
foreach ($eWPTcomputer in $eWPTcomputers) {
if ($SCCMcomputer.Computername -eq $eWPTComputer.Computername) {
$obj = New-Object PSObject
$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $SCCMcomputer.Computername
$matchingComp +=$obj
}
}
}
$matchingComp | Export-Csv $inEWPT -Delimiter "," -NoTypeInformation
Aber ich brauche immer noch die, die drin sind$SCCMcomputer
aber NICHT in$eWPTcomputers
...
Ich habe einige Lösungen für SO mit anderen Sprachen (z. B. Perl) gefunden, aber nicht für PowerShell.
AKTUALISIEREN
Ich erhalte immer noch nicht die richtige Ausgabe in Excel mit dieser Formel:
Die Ausgabe sieht folgendermaßen aus:
Bedeutet, einige sind hier, andere nicht. Die Ausgabe in Powershell ist wie folgt
bedeutet 0KB ist leer.
$SCCMcomputers | Export-Csv $sccmexport -Delimiter "," -NoTypeInformation
$eWPTcomputers | Export-Csv $ewptexport -Delimiter "," -NoTypeInformation
Compare-Object -ReferenceObject $SCCMcomputers -DifferenceObject $eWPTcomputers | ?{$_.sideIndicator -eq "=>"} |select inputobject | Export-Csv $inEWPT -NoTypeInformation
Compare-Object -ReferenceObject $SCCMcomputers -DifferenceObject $eWPTcomputers | ?{$_.sideIndicator -eq "=="} |select inputobject | Export-Csv $inBoth -NoTypeInformation
Compare-Object -ReferenceObject $SCCMcomputers -DifferenceObject $eWPTcomputers | ?{$_.sideIndicator -eq "<="} |select inputobject | Export-Csv $inSCCM -NoTypeInformation
Und beide Spaltennamen (oder wie sie heißen) von SCCMcomptuers / eWPTcomputers lauten "Computername".
Irgendeine Idee, was ich falsch machen könnte? Beide Computer-Arrays werden aus SQL und in Hashtabellen generiert (ich denke, es heißt):@{Computername=......}@{Computername....
, etwas wie das.
Update 2
foreach ($t in $sccmComputers) {
$Test1 += $t.computername
}
$Test2 = @()
foreach ($t in $ewptComputers) {
$Test2 += $t.computername
}
Indem Sie den Header der Hashtable entfernen und nur Arrays voller Zeichenfolgen haben, wirken Sie fantastisch ... sogar-Property computername
hat nicht funktioniert ...: S