Compare-Object
Vergleicht zwei Gruppen von Objekten.
Syntax
All
Compare-Object
[-ReferenceObject] <PSObject[]>
[-DifferenceObject] <PSObject[]>
[-SyncWindow <Int32>]
[-Property <Object[]>]
[-ExcludeDifferent]
[-IncludeEqual]
[-PassThru]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Beschreibung
Das Cmdlet Compare-Object vergleicht zwei Objektgruppen. Eine Gruppe von Objekten ist der Verweis, und der andere Satz von Objekten ist der Unterschied.
Das Ergebnis des Vergleichs gibt an, ob ein Eigenschaftswert nur im Verweis Objekt (<=) oder nur im Unterschied Objekt (=>) angezeigt wurde. Wenn der IncludeEqual Parameter verwendet wird, (==) gibt an, dass sich der Wert in beiden Objekten befindet.
Wenn der Verweis oder die Differenz Objekte null ($null) sind), generiert Compare-Object einen Beendigungsfehler.
Einige Beispiele verwenden splatting, um die Zeilenlänge der Codebeispiele zu verringern. Weitere Informationen finden Sie unter about_Splatting. Außerdem werden in den Beispielen zwei Textdateien mit jedem Wert in einer separaten Zeile verwendet.
Testfile1.txt enthält die Werte: Hund, Eichhörnchen und Vogel.
Testfile2.txt enthält die Werte: Katze, Vogel und Racoon.
Beispiele
Beispiel 1: Vergleichen des Inhalts von zwei Textdateien
In diesem Beispiel wird der Inhalt von zwei Textdateien verglichen. Die Ausgabe zeigt nur die Zeilen an, die zwischen den Dateien unterschiedlich sind.
Testfile1.txt ist der Verweis Objekt (<=) und Testfile2.txtist der Unterschied Objekt (=>).
Zeilen mit Inhalten, die in beiden Dateien angezeigt werden, werden nicht angezeigt.
Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat =>
racoon =>
dog <=
squirrel <=
Beispiel 2: Vergleichen jeder Inhaltszeile in zwei Textdateien
In diesem Beispiel wird IncludeEqual verwendet, um jede Inhaltszeile in zwei Textdateien zu vergleichen. Alle Inhaltszeilen aus beiden Dateien werden angezeigt.
Der SideIndicator gibt an, ob die Zeile im Testfile1.txt (), im <= (Testfile2.txt) => oder in beiden Dateien (==) angezeigt wird.
$objects = @{
ReferenceObject = $(Get-Content -Path C:\Test\Testfile1.txt)
DifferenceObject = $(Get-Content -Path C:\Test\Testfile2.txt)
}
Compare-Object @objects -IncludeEqual
InputObject SideIndicator
----------- -------------
bird ==
cat =>
racoon =>
dog <=
squirrel <=
Beispiel 3: Vergleichen der einzelnen Inhaltszeilen und Ausschließen der Unterschiede
In diesem Beispiel werden die parameter IncludeEqual und ExcludeDifferent Parameter verwendet, um jede Inhaltszeile in zwei Textdateien zu vergleichen.
Da der Befehl den parameter ExcludeDifferent verwendet, enthält die Ausgabe nur Zeilen, die in beiden Dateien enthalten sind, wie vom SideIndicator (==).
$objects = @{
ReferenceObject = $(Get-Content -Path C:\Test\Testfile1.txt)
DifferenceObject = $(Get-Content -Path C:\Test\Testfile2.txt)
}
Compare-Object @objects -IncludeEqual -ExcludeDifferent
InputObject SideIndicator
----------- -------------
bird ==
Beispiel 4: Vergleichen von zwei Gruppen von Prozessobjekten
In diesem Beispiel werden zwei Sätze von Objekten verglichen, die die ausgeführten Prozesse des Computers enthalten.
$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject SideIndicator
----------- -------------
System.Diagnostics.Process (notepad) =>
Das Get-Process Cmdlet ruft die ausgeführten Prozesse des Computers ab und speichert sie in der $Processes_Before Variablen.
Die notepad.exe Anwendung wird gestartet.
Get-Process Ruft die aktualisierte Liste der laufenden Prozesse des Computers ab und speichert sie in der $Processes_After Variablen.
Sie Compare-Object vergleichen die beiden Sätze von Prozessobjekten, die in den $Processes_Before Variablen und $Processes_After gespeichert sind. Die Ausgabe zeigt die Differenz notepad.exezum $Processes_After Objekt an.
Parameter
-CaseSensitive
Gibt an, dass bei Vergleichen zwischen Groß- und Kleinschreibung unterschieden werden soll.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Culture
Gibt die Kultur an, die für Vergleiche verwendet werden soll.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-DifferenceObject
Gibt die Objekte an, die mit dem Verweis-Objekte verglichen werden.
Parametereigenschaften
| Typ: | PSObject[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-ExcludeDifferent
Gibt an, dass dieses Cmdlet nur die Merkmale von verglichenen Objekten anzeigt, die gleich sind. Die Unterschiede zwischen den Objekten werden verworfen.
Verwenden Sie ExcludeDifferent- mit IncludeEqual-, um nur die Zeilen anzuzeigen, die zwischen dem Verweis und Unterschied Objekten übereinstimmen.
Wenn ExcludeDifferent- ohne IncludeEqualangegeben wird, gibt es keine Ausgabe.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-IncludeEqual
IncludeEqual- zeigt die Übereinstimmungen zwischen dem Verweis und Unterschied Objekten an.
Standardmäßig enthält die Ausgabe auch die Unterschiede zwischen dem Verweis und Unterschied Objekten.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-PassThru
Wenn Sie den PassThru-Parameter verwenden Compare-Object, wird der PSCustomObject Wrapper um die verglichenen Objekte weggelassen und die unterschiedlichen Objekte unverändert zurückgegeben.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Property
Gibt ein Array von Eigenschaften des Bezugs und Unterschied zu vergleichenden Objekte an.
Parametereigenschaften
| Typ: | Object[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-ReferenceObject
Gibt ein Array von Objekten an, das als Verweis für den Vergleich verwendet wird.
Parametereigenschaften
| Typ: | PSObject[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-SyncWindow
Gibt die Anzahl angrenzender Objekte an, die Compare-Object überprüft, während sie in einer Auflistung von Objekten nach einer Übereinstimmung suchen.
Compare-Object untersucht benachbarte Objekte, wenn es das Objekt nicht an derselben Position in einer Auflistung findet. Der Standardwert ist [Int32]::MaxValue, was bedeutet, dass Compare-Object die gesamte Objektauflistung untersucht.
Parametereigenschaften
| Typ: | Int32 |
| Standardwert: | [Int32]::MaxValue |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können ein Objekt an den parameter DifferenceObject senden.
Ausgaben
None
Wenn das Referenzobjekt und das Differenzobjekt identisch sind, gibt es keine Ausgabe.
PSCustomObject
Wenn die Objekte unterschiedlich sind, werden die unterschiedlichen Objekte in einen Compare-ObjectPSCustomObject eingeschlossen, um auf die Unterschiede zu verweisen. Wenn Sie den PassThru-Parameter verwenden, Compare-Object wird der PSCustomObject Wrapper um die verglichenen Objekte weggelassen und die unterschiedlichen Objekte unverändert zurückgegeben.