Compare-Object
Porovná dvě sady objektů.
Syntax
All
Compare-Object
[-ReferenceObject] <PSObject[]>
[-DifferenceObject] <PSObject[]>
[-SyncWindow <Int32>]
[-Property <Object[]>]
[-ExcludeDifferent]
[-IncludeEqual]
[-PassThru]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Description
Rutina Compare-Object porovnává dvě sady objektů. Jedna sada objektů je odkaza druhá sada objektů je rozdíl.
Výsledek porovnání označuje, zda se hodnota vlastnosti objevila pouze v odkaz objektu (<=) nebo pouze v rozdílu objektu (=>). Pokud se použije parametr IncludeEqual, (==) indikuje hodnotu v obou objektech.
Pokud odkaz nebo rozdíl objekty mají hodnotu null ($null), Compare-Object vygeneruje ukončující chybu.
Některé příklady používají k zmenšení délky řádku ukázek kódu. Další informace naleznete v části s názvem about_Splatting. A příklady používají dva textové soubory s každou hodnotou na samostatném řádku.
Testfile1.txt obsahuje hodnoty: pes, veverka a pták.
Testfile2.txt obsahuje hodnoty: kočka, pták a racoon.
Příklady
Příklad 1: Porovnání obsahu dvou textových souborů
Tento příklad porovnává obsah dvou textových souborů. Ve výstupu se zobrazí jenom řádky, které se mezi soubory liší.
Testfile1.txt je objekt (<=) a Testfile2.txtje rozdíl objektu (=>).
Řádky s obsahem, které se zobrazují v obou souborech, se nezobrazují.
Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat =>
racoon =>
dog <=
squirrel <=
Příklad 2: Porovnání jednotlivých řádků obsahu ve dvou textových souborech
Tento příklad používá IncludeEqual k porovnání každého řádku obsahu ve dvou textových souborech. Zobrazí se všechny řádky obsahu z obou souborů.
$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 <=
Příklad 3: Porovnání jednotlivých řádků obsahu a vyloučení rozdílů
Tento příklad používá IncludeEqual a ExcludeDifferent parametry k porovnání jednotlivých řádků obsahu ve dvou textových souborech.
Vzhledem k tomu, že příkaz používá parametr
$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 ==
Příklad 4: Porovnání dvou sad procesních objektů
Tento příklad porovnává dvě sady objektů, které obsahují spuštěné procesy počítače.
$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject SideIndicator
----------- -------------
System.Diagnostics.Process (notepad) =>
Rutina Get-Process získá spuštěné procesy počítače a uloží je do proměnné $Processes_Before.
Aplikace notepad.exe se spustí.
Get-Process získá aktualizovaný seznam spuštěných procesů počítače a uloží je do proměnné $Processes_After.
Compare-Object porovnat dvě sady procesních objektů uložených v $Processes_Before a $Processes_After proměnných. Výstup zobrazí rozdíl notepad.exez objektu $Processes_After.
Parametry
-CaseSensitive
Označuje, že porovnání by měla rozlišovat malá a velká písmena.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Culture
Určuje jazykovou verzi, která se má použít pro porovnání.
Vlastnosti parametru
| Typ: | String |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-DifferenceObject
Určuje objekty, které jsou porovnány s odkaz objekty.
Vlastnosti parametru
| Typ: | PSObject[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 1 |
| Povinné: | True |
| Hodnota z kanálu: | True |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-ExcludeDifferent
Označuje, že tato rutina zobrazuje pouze vlastnosti porovnávaných objektů, které jsou stejné. Rozdíly mezi objekty jsou zahozeny.
Pomocí
Pokud ExcludeDifferent je zadán bez IncludeEqual, neexistuje žádný výstup.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-IncludeEqual
Ve výchozím nastavení výstup obsahuje také rozdíly mezi odkaz a rozdíl objekty.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-PassThru
Když použijete parametr PassThru, Compare-Object vynechá PSCustomObject obálku kolem porovnávaných objektů a vrátí odlišné objekty beze změny.
Vlastnosti parametru
| Typ: | SwitchParameter |
| Default value: | False |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-Property
Určuje pole vlastností odkazu a rozdíl objekty k porovnání.
Vlastnosti parametru
| Typ: | Object[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-ReferenceObject
Určuje pole objektů, které se používají jako odkaz pro porovnání.
Vlastnosti parametru
| Typ: | PSObject[] |
| Default value: | None |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | 0 |
| Povinné: | True |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
-SyncWindow
Určuje počet sousedních objektů, které Compare-Object kontroluje při hledání shody v kolekci objektů.
Compare-Object prozkoumá sousední objekty, pokud nenajde objekt ve stejné pozici v kolekci. Výchozí hodnota je [Int32]::MaxValue, což znamená, že Compare-Object prozkoumá celou kolekci objektů.
Vlastnosti parametru
| Typ: | Int32 |
| Default value: | [Int32]::MaxValue |
| Podporuje zástupné znaky: | False |
| DontShow: | False |
Sady parametrů
(All)
| Position: | Named |
| Povinné: | False |
| Hodnota z kanálu: | False |
| Hodnota z kanálu podle názvu vlastnosti: | False |
| Hodnota ze zbývajících argumentů: | False |
CommonParameters
Tato rutina podporuje běžné parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction a -WarningVariable. Další informace najdete v about_CommonParameters.
Vstupy
PSObject
Objekt můžete odeslat do DifferenceObject parametru.
Výstupy
None
Pokud odkaz objekt a rozdíl objektu jsou stejné, neexistuje žádný výstup.
PSCustomObject
Pokud se objekty liší, Compare-Object zabalí různé objekty do obálky PSCustomObject s vlastností SideIndicator odkazující na rozdíly. Když použijete parametr PassThru, Compare-Object vynechá obálku PSCustomObject kolem porovnávaných objektů a vrátí odlišné objekty beze změny.