Powershell Compare-Object mit unterschiedlichen Attributen
Hallo,
bisher habe ich mit Compare-Object immer gute Erfahrungen gemacht, wenn es um den vergleich eindimensionaler Arrays ging. Jetzt habe ich ein mehrdimensionales Array (Name, Anmeldename, Benutzerrolle), welches ich mit einem anderen vergleichen möchte. Mein Problem ist nun das ich keine verlässlichen Unterschiede erhalte. Wenn ich aus meinem referenzierenden Array einen Eintrag lösche und beim differenzierenden Array einen hinzufüge, gibt es keine Unterschiede. Wenn ich nur im differenzieren Array einen Eintrag hinzufüge, bekomme ich mein gewünschtes Resultat.
Um mein Problem zu lösen, habe ich das Compare-Object auf $Array.Name gesetzt. Nun habe ich aber das Problem das ich keinen Unterschied erhalte, wenn sich die Rolle vom Benutzer geändert hat. Gibt es eine Möglichkeit den Vergleich durchzuführen? Ich habe bereits einen Versuch unternommen und mein Array mit ConvertTo-CSV umzuwandeln. Ich erhalte dann auch die Unterschiede, jedoch fehlt mir dabei der SideIndicator und letztlich auch der CSV Header, damit ich einen Eintrag auch mit Name, Anmeldename oder Role ansprechen kann.
bisher habe ich mit Compare-Object immer gute Erfahrungen gemacht, wenn es um den vergleich eindimensionaler Arrays ging. Jetzt habe ich ein mehrdimensionales Array (Name, Anmeldename, Benutzerrolle), welches ich mit einem anderen vergleichen möchte. Mein Problem ist nun das ich keine verlässlichen Unterschiede erhalte. Wenn ich aus meinem referenzierenden Array einen Eintrag lösche und beim differenzierenden Array einen hinzufüge, gibt es keine Unterschiede. Wenn ich nur im differenzieren Array einen Eintrag hinzufüge, bekomme ich mein gewünschtes Resultat.
Um mein Problem zu lösen, habe ich das Compare-Object auf $Array.Name gesetzt. Nun habe ich aber das Problem das ich keinen Unterschied erhalte, wenn sich die Rolle vom Benutzer geändert hat. Gibt es eine Möglichkeit den Vergleich durchzuführen? Ich habe bereits einen Versuch unternommen und mein Array mit ConvertTo-CSV umzuwandeln. Ich erhalte dann auch die Unterschiede, jedoch fehlt mir dabei der SideIndicator und letztlich auch der CSV Header, damit ich einen Eintrag auch mit Name, Anmeldename oder Role ansprechen kann.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 400607
Url: https://administrator.de/contentid/400607
Ausgedruckt am: 21.11.2024 um 16:11 Uhr
3 Kommentare
Neuester Kommentar
Für Objekte mit mehreren Eigenschaften hat compare den Parameter -Property und -Passthru
Doku lesen ist so einfach min Jung ... da braucht man doch keinen extra Thread. Vor allem Code ist trumpf und davon sieht man hier nichts.
Gruß l.
Doku lesen ist so einfach min Jung ... da braucht man doch keinen extra Thread. Vor allem Code ist trumpf und davon sieht man hier nichts.
Gruß l.
Aus meiner Sicht ist nun nichts anders als wenn ich den Parameter weggelassen hätte
Ohhh das ist ein gewaltiger Unterschied, denn dieser Parameter definiert anhand welcher Eigenschaften die Objekte miteinander verglichen werden. Wird der Parameter nicht benutzt zieht die Powershell nur den Typ des gesamten Objekts zum Vergleich heran.Sieht man schön an diesem Beispiel:
$obj1 = [pscustomobject]@{Name="Max";Nachname="Musterman"}
$obj2 = [pscustomobject]@{}
compare $obj1 $obj1 -IncludeEqual