PowerShell – Vergleichen von Objekten

Das CMDLet Compare-Objects bietet die Möglichkeit, zwei Objekte miteinander zu vergleichen. Zunächst ein kleines Beispiel, dass die Funktion verdeutlicht. Wir nehmen zwei Arrays und vergleichen diese miteinander.

comp1

Die Richtungsanzeiger unter SideIndicator geben die Unterschiede an. “6” ist in $b, aber nicht in $a enthalten und “1” ist in $a, aber nicht in $b enthalten. Sie haben die Möglichkeit zu wählen, welches Ergebnis Sie möchten. Ohne Parameter werden nur die Unterschiede ausgegeben. Zur zusätzlichen Ausgabe der übereinstimmenden Einträge verwenden Sie den Parameter –IncludeEqual.

comp2

Mit dem zusätzlichen Parameter -ExcludeDifferent erhalten Sie nur die Übereinstimmungen.

comp3


Anwendungsbeispiele

Sie vergleichen die gestarteten Prozesse eines Systems zu unterschiedlichen Zeiten.

comp4

Wie Sie am Ergebnis erkennen können, wurde zwischen den beiden Abfragen auf laufende Prozesse Microsoft Edge gestartet.


Über dieses Verfahren können Sie auch Dateien miteinander vergleichen. Wir nehmen als Beispiel zwei fiktive CSV Logdateien, die unter dem letzten Eintrag einmal “OK” und einmal “Error” melden.

Datei1.txt

Date,Time,EntryID,Status
11/11/16,10:46,24,ok
11/11/16,11:22,12,error
11/11/16,12:12,06,warning
11/11/16,12:13,24,ok
11/11/16,14:32,24,ok

Datei2.txt

Date,Time,EntryID,Status
11/11/16,10:46,24,ok
11/11/16,11:22,12,error
11/11/16,12:12,06,warning
11/11/16,12:13,24,ok
11/11/16,14:32,12,error

Nun werden beide Dateien verglichen.

comp5


Tipp

Für Compare-Object gibt es schon den Alias diff und mit dem Parameter –PassThru können Sie die Ausgabe noch etwas einfacher darstellen.

comp6