Freigeben über


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.