Natürlich, das Vergleichen von Dateien oder Dateiinhalten in Windows ist etwas, das Sie im Laufe der Jahre gemacht haben. Aber belastet das nicht irgendwann Ihre Augen, wenn Sie Dateien und Inhalte visuell vergleichen? Nun, Glück für Sie, Sie können Objekte mit PowerShell genau so vergleichen, wie Sie es möchten, mit dem Compare-Object
-Befehl.
In diesem Tutorial lernen Sie, Objekte mit PowerShell zu vergleichen, wie Dateien oder Dateiinhalte, während Sie die Ausgabe anpassen.
Schonen Sie Ihre Augen und vergleichen Sie Objekte effektiv!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein, aber solange Sie einen Windows-PC mit PowerShell haben, sind Sie bereit. PowerShell-Version 5.1 wird in diesem Tutorial verwendet.
Vergleich von Dateiinhalten
Stellen Sie sich vor, Sie haben zwei verschiedene Dateien mit demselben Inhalt. Wie würden Sie wissen, ob beide Dateien denselben Inhalt haben? Das Ausführen des Get-Content
-Befehls könnte die Lösung sein. Der Get-Content
-Befehl ruft den Inhalt einer Datei von einem angegebenen Speicherort ab.
Öffnen Sie PowerShell und führen Sie die unten stehenden Befehle aus, um den Inhalt (Get-Content
) der angegebenen Dateien in Variablen ($file1
und $file2
) zu erhalten. Ersetzen Sie den unten stehenden Pfad durch den Pfad Ihrer gewählten Dateien, die Sie vergleichen möchten.

Führen Sie nun den unten stehenden Compare-Object
-Befehl aus, um den Inhalt von $file
(-ReferenceObject
) mit $file2
(-DifferenceObject
) zu vergleichen.
Standardmäßig zeigt Compare-Object
nicht die Werte an, die in beiden Variablen vorhanden sind. Fügen Sie als Lösung den Parameter -IncludeEqual
hinzu, um die Werte in der Ausgabe anzuzeigen.
Aus der unten stehenden Ausgabe gibt das SideIndicator an, ob beide Dateien den gleichen Inhalt (pro Zeile) haben oder nicht:
SideIndicator | Definition |
== | Indicates the content is present in both files ($file1 and $file2). |
=> | Indicates the content only exists in the -DifferenceObject file ($file2). |
=> | Indicates the content only exists in the -ReferenceObject file ($file1). |

Vielleicht ziehen Sie es vor, Zeichenketten mit Groß- und Kleinschreibung zu vergleichen. Wenn ja, fügen Sie den Parameter -CaseSensitive
hinzu, da der Compare-Object
-Befehl standardmäßig nicht auf Groß- und Kleinschreibung achtet.
Führen Sie die unten stehenden Befehle aus, um $file1
mit $file2
zu vergleichen, sowohl mit als auch ohne Groß- und Kleinschreibung.
Wie Sie unten sehen können, zeigt der Compare-Object
-Befehl ohne den -CaseSensitive
-Parameter powershell nicht im Ausgabebereich an.

Das Vergleichen von Zeichenfolgen funktioniert ähnlich wie das Vergleichen von Dateiinhalten, bei dem Sie entweder die Zeichenfolgen explizit angeben oder Variablen verwenden können, um die zu vergleichenden Zeichenfolgen darzustellen. Beachten Sie, dass der
Compare-Object
-Befehl Quellzeichenfolgen vergleicht und nicht einzelne Zeichen.
Vergleich von Listen von Dateien aus verschiedenen Orten
Jetzt, da Sie wissen, wie Sie Dateiinhalte vergleichen können, warum nicht tatsächliche Dateien aus verschiedenen Orten vergleichen? Das Vergleichen von Listen von Dateien ist nützlich, wenn Sie zwei verschiedene Server verwalten, auf denen Sie denselben Ordner für einen Dienst mit denselben Dateien haben.
Diesmal verwenden Sie den Get-ChildItem
-Befehl, um die Liste der Dateien in einem Ordner abzurufen und mit der Liste der Dateien eines anderen Ordners zu vergleichen.
Führen Sie die folgenden Befehle aus, um die Dateilisten von C:\Temp\Folder1\ und C:\Temp\Folder2\ abzurufen und die Listen in den Variablen $Folder1List und $Folder2List zu speichern.
Sie können auch den Parameter
-Recurse
imGet-ChildItem
-Befehl verwenden, um rekursiv eine Liste von Dateien in Unterordnern abzurufen.

Vergleichen von Objekten mit PowerShell nach Eigenschaften
Sie haben gerade Dateien an verschiedenen Orten verglichen, aber Sie möchten möglicherweise eine weitere Option hinzufügen, um Dateien nach Eigenschaften zu vergleichen. In dieser Demo vergleichen Sie Dateien nach dem letzten Zugriffszeitpunkt.
Führen Sie die folgenden Befehle aus, um Dateien aus verschiedenen Ordnern ($Folder1 und $Folder2) nach dem letzten Zugriffszeitpunkt zu vergleichen.

Vergleich von Prozessen und Diensten
Die Möglichkeiten des Befehls Compare-Object
sind nicht darauf beschränkt, nur Zeichenfolgen oder Inhalte in Dateien zu vergleichen. Sie können auch Prozesse, Dienste usw. vergleichen.
Vielleicht möchten Sie Dienste zwischen zwei Servern erfassen. Wenn ja, können Sie die Dienste in Variablen speichern und vergleichen.
Führen Sie die folgenden Befehle aus, um Dienste zwischen zwei verschiedenen Servern ($server1
und $server2
) zu vergleichen.

Wenn Sie Prozesse vergleichen möchten, sind die auszuführenden Befehle ähnlich wie beim Vergleich von Diensten. Sie können auch Prozesse auf demselben Computer oder auf zwei verschiedenen Servern vergleichen.
Führen Sie die untenstehenden Befehle aus, um laufende Prozesse von zwei Maschinen (Jumpbox
und AD
-Server) in Variablen zu erfassen und zu vergleichen.

Identifizierung von Aktivitäten durch Vergleich von Prozesslisten
Der Compare-Object
-Befehl ist auch in bestimmten Fehlerbehebungsszenarien hilfreich. Wie? Sie können laufende Prozesse in eine Variable erfassen und Ihre Aktivität starten. Dann erfassen Sie die laufenden Prozesse in einer neuen Variable und vergleichen die neuen Prozesse.
Führen Sie die unten stehenden Befehle aus, um Aktivitäten zu identifizieren, indem Sie zwei verschiedene Listen erfasster Prozesse vergleichen.

Vergleich von Benutzern zwischen verschiedenen Active Directory-Gruppen
Wenn Sie dieselbe Benutzermenge aus verschiedenen AD-Gruppen verwalten, ist der Vergleich der Benutzerliste mit dem Compare-Object
-Befehl hilfreich. Dadurch können Sie genau überwachen, ob ein Benutzer in einer der beiden unterschiedlichen AD-Gruppen fehlt.
Führen Sie die unten stehenden Befehle aus, um Benutzer zwischen zwei verschiedenen AD-Gruppen zu vergleichen (staticvmusers
und vdivmusers
).

Schlussfolgerung
In diesem Tutorial haben Sie gelernt, wie Sie Objekte mit PowerShell auf verschiedene Weise vergleichen können, von Dateiinhalten bis hin zu Benutzern in AD-Gruppen. Sie haben erkannt, dass das Compare-Object
-Cmdlet eine schnelle Lösung zum Vergleichen von Dateien, Diensten, Prozessen usw. ist.
Sie haben grundlegende Kenntnisse im Umgang mit dem Compare-Object
-Cmdlet erlangt. Warum bauen Sie dieses neu gefundene Wissen nicht weiter aus, indem Sie leistungsstarke PowerShell-Vergleichsarrays erlernen?
Source:
https://adamtheautomator.com/compare-objects-with-powershell/