Sdílet prostřednictvím


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.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ů.

SideIndicator určuje, jestli se řádek zobrazí v odkazu objektu (), rozdíl objektu () nebo v obou souborech ().

$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 ExcludeDifferent, výstup obsahuje pouze řádky obsažené v obou souborech, jak ukazuje 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        ==

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í ExcludeDifferent IncludeEqual zobrazíte pouze řádky, které odpovídají odkazu a rozdíly objekty.

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

IncludeEqual zobrazí shodu mezi a rozdíly objekty.

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

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.