Compare-Object
Porovná dvě sady objektů.
Syntaxe
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 najdete v tématu 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.txt
je 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.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Culture
Určuje jazykovou verzi, která se má použít pro porovnání.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-DifferenceObject
Určuje objekty, které jsou porovnány s odkaz objekty.
Typ: | PSObject[] |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | 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.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-IncludeEqual
Ve výchozím nastavení výstup obsahuje také rozdíly mezi odkaz a rozdíl objekty.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Property
Určuje pole vlastností odkazu a rozdíl objekty k porovnání.
Typ: | Object[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-ReferenceObject
Určuje pole objektů, které se používají jako odkaz pro porovnání.
Typ: | PSObject[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | 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ů.
Typ: | Int32 |
Position: | Named |
Default value: | [Int32]::MaxValue |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Objekt můžete odeslat do DifferenceObject parametru.
Výstupy
None
Pokud odkaz objekt a rozdíl objektu jsou stejné, neexistuje žádný výstup.
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.