Delen via


Compare-Object

Vergelijkt twee sets objecten.

Syntaxis

Compare-Object
       [-ReferenceObject] <PSObject[]>
       [-DifferenceObject] <PSObject[]>
       [-SyncWindow <Int32>]
       [-Property <Object[]>]
       [-ExcludeDifferent]
       [-IncludeEqual]
       [-PassThru]
       [-Culture <String>]
       [-CaseSensitive]
       [<CommonParameters>]

Description

Met de cmdlet Compare-Object worden twee sets objecten vergeleken. Eén set objecten is de verwijzingen de andere set objecten is het verschil.

Het resultaat van de vergelijking geeft aan of een eigenschapswaarde alleen wordt weergegeven in de verwijzing object (<=) of alleen in het verschil object (=>). Als de parameter IncludeEqual wordt gebruikt, geeft (==) aan dat de waarde zich in beide objecten bevindt.

Als de verwijzing of het verschil objecten null ($null) zijn, genereert Compare-Object een afsluitfout.

In sommige voorbeelden wordt splatting gebruikt om de regellengte van de codevoorbeelden te verminderen. Zie about_Splatting voor meer informatie. En in de voorbeelden worden twee tekstbestanden gebruikt, waarbij elke waarde op een afzonderlijke regel wordt weergegeven. Testfile1.txt bevat de waarden: hond, eekhoorn en vogel. Testfile2.txt bevat de waarden: kat, vogel en.

Voorbeelden

Voorbeeld 1: De inhoud van twee tekstbestanden vergelijken

In dit voorbeeld wordt de inhoud van twee tekstbestanden vergeleken. In de uitvoer worden alleen de regels weergegeven die verschillen tussen de bestanden. Testfile1.txt is de verwijzing object (<=) en Testfile2.txtis het verschil object (=>).

Regels met inhoud die in beide bestanden worden weergegeven, worden niet weergegeven.

Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)

InputObject SideIndicator
----------- -------------
cat         =>
racoon      =>
dog         <=
squirrel    <=

Voorbeeld 2: Elke regel met inhoud in twee tekstbestanden vergelijken

In dit voorbeeld wordt de IncludeEqual- gebruikt om elke regel met inhoud in twee tekstbestanden te vergelijken. Alle regels met inhoud van beide bestanden worden weergegeven.

De SideIndicator geeft aan of de lijn wordt weergegeven in het Testfile1.txtverwijzing sobject (<=), Testfile2.txtverschil object (=>) of beide bestanden (==).

$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    <=

Voorbeeld 3: Elke regel met inhoud vergelijken en de verschillen uitsluiten

In dit voorbeeld worden de parameters IncludeEqual en ExcludeGedifferentieerd gebruikt om elke regel met inhoud in twee tekstbestanden te vergelijken.

Omdat de opdracht gebruikmaakt van de parameter ExcludeGedifferentieerd, bevat de uitvoer alleen regels in beide bestanden, zoals wordt weergegeven in de 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        ==

Voorbeeld 4: Twee sets procesobjecten vergelijken

In dit voorbeeld worden twee sets objecten vergeleken die de actieve processen van de computer bevatten.

$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After

InputObject                            SideIndicator
-----------                            -------------
System.Diagnostics.Process (notepad)   =>

De Get-Process cmdlet haalt de actieve processen van de computer op en slaat deze op in de $Processes_Before variabele.

De notepad.exe-toepassing wordt gestart.

Get-Process de bijgewerkte lijst met actieve processen van de computer ophaalt en opslaat in de variabele $Processes_After.

De Compare-Object vergelijkt de twee sets procesobjecten die zijn opgeslagen in de $Processes_Before en $Processes_After variabelen. In de uitvoer wordt het verschil, notepad.exe, van het $Processes_After-object weergegeven.

Parameters

-CaseSensitive

Geeft aan dat vergelijkingen hoofdlettergevoelig moeten zijn.

Type:SwitchParameter
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Culture

Hiermee geeft u de cultuur die moet worden gebruikt voor vergelijkingen.

Type:String
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-DifferenceObject

Hiermee geeft u de objecten op die worden vergeleken met de verwijzing objecten.

Type:PSObject[]
Position:1
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

-ExcludeDifferent

Geeft aan dat deze cmdlet alleen de kenmerken weergeeft van vergeleken objecten die gelijk zijn. De verschillen tussen de objecten worden verwijderd.

Gebruik ExcludeGedifferentieerd met IncludeEqual- om alleen de lijnen weer te geven die overeenkomen met de verwijzing en verschil objecten.

Als ExcludeGedifferentieerd- is opgegeven zonder IncludeEqual-, is er geen uitvoer.

Type:SwitchParameter
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-IncludeEqual

IncludeEqual- geeft de overeenkomsten weer tussen de verwijzing en verschil objecten.

Standaard bevat de uitvoer ook de verschillen tussen de -verwijzing en verschil objecten.

Type:SwitchParameter
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-PassThru

Wanneer u de parameter PassThru gebruikt, laat Compare-Object de PSCustomObject wrapper rond de vergeleken objecten weg en worden de verschillende objecten ongewijzigd geretourneerd.

Type:SwitchParameter
Position:Named
Default value:False
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-Property

Hiermee geeft u een matrix van eigenschappen van de verwijzing en verschil objecten te vergelijken.

Type:Object[]
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-ReferenceObject

Hiermee geeft u een matrix van objecten die worden gebruikt als referentie voor vergelijking.

Type:PSObject[]
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-SyncWindow

Hiermee geeft u het aantal aangrenzende objecten op dat Compare-Object inspecteert tijdens het zoeken naar een overeenkomst in een verzameling objecten. Compare-Object onderzoekt aangrenzende objecten wanneer het object niet op dezelfde positie in een verzameling wordt gevonden. De standaardwaarde is [Int32]::MaxValue, wat betekent dat Compare-Object de hele objectverzameling onderzoekt.

Type:Int32
Position:Named
Default value:[Int32]::MaxValue
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

Invoerwaarden

PSObject

U kunt een object omlaag verzenden naar de parameter DifferenceObject.

Uitvoerwaarden

None

Als het object en het verschil object hetzelfde zijn, is er geen uitvoer.

PSCustomObject

Als de objecten verschillend zijn, Compare-Object de verschillende objecten in een PSCustomObject wrapper verpakt met een eigenschap SideIndicator om te verwijzen naar de verschillen. Wanneer u de parameter PassThru gebruikt, laat Compare-Object de PSCustomObject wrapper rond de vergeleken objecten weg en worden de verschillende objecten ongewijzigd geretourneerd.