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

Antworten auf die Frage(5)

Ihre Antwort auf die Frage