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.txt
is 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.txt
verwijzing sobject (<=
), Testfile2.txt
verschil 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
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.
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.