Udostępnij za pomocą


Compare-Object

Porównuje dwa zestawy obiektów.

Składnia

All

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

Opis

Polecenie cmdlet Compare-Object porównuje dwa zestawy obiektów. Jednym zestawem obiektów jest odwołanie , a drugi zestaw obiektów jest różnicą .

Wynik porównania wskazuje, czy wartość właściwości pojawiła się tylko w odwołania do obiektu (<=) lub tylko w różnicy obiektu (=>). Jeśli jest używany parametr IncludeEqual, (==) wskazuje, że wartość znajduje się w obu obiektach.

Jeśli odwołania lub różnicy obiekty mają wartość null ($null), Compare-Object generuje błąd zakończenia.

W niektórych przykładach użyto fragmentowania, aby zmniejszyć długość wiersza przykładów kodu. Aby uzyskać więcej informacji, zobacz about_Splatting. W przykładach użyto dwóch plików tekstowych z każdą wartością w osobnym wierszu. Testfile1.txt zawiera wartości: pies, wiewiórka i ptak. Testfile2.txt zawiera wartości: kot, ptak i racoon.

Przykłady

Przykład 1. Porównanie zawartości dwóch plików tekstowych

W tym przykładzie porównana jest zawartość dwóch plików tekstowych. Dane wyjściowe zawierają tylko wiersze, które różnią się między plikami. Testfile1.txt jest obiektem (<=), a Testfile2.txtjest różnicą obiektu (=>).

Wiersze z zawartością wyświetlaną w obu plikach nie są wyświetlane.

Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat         =>
racoon      =>
dog         <=
squirrel    <=

Przykład 2. Porównanie każdego wiersza zawartości w dwóch plikach tekstowych

W tym przykładzie użyto IncludeEqual do porównania każdego wiersza zawartości w dwóch plikach tekstowych. Zostaną wyświetlone wszystkie wiersze zawartości z obu plików.

SideIndicator określa, czy wiersz pojawia się w Testfile1.txtodwołania do obiektu (<=), Testfile2.txtróżnicy obiektu (=>) lub obu plików (==).

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

Przykład 3. Porównywanie poszczególnych wierszy zawartości i wykluczanie różnic

W tym przykładzie użyto parametrów IncludeEqual i ExcludeDifferent w celu porównania każdego wiersza zawartości w dwóch plikach tekstowych.

Ponieważ polecenie używa parametru ExcludeDifferent, dane wyjściowe zawierają tylko wiersze zawarte w obu plikach, jak pokazano w 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        ==

Przykład 4. Porównanie dwóch zestawów obiektów procesu

W tym przykładzie porównaliśmy dwa zestawy obiektów zawierających uruchomione procesy komputera.

$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject                            SideIndicator
-----------                            -------------
System.Diagnostics.Process (notepad)   =>

Polecenie cmdlet Get-Process pobiera uruchomione procesy komputera i przechowuje je w zmiennej $Processes_Before.

Aplikacja notepad.exe została uruchomiona.

Get-Process pobiera zaktualizowaną listę uruchomionych procesów komputera i przechowuje je w zmiennej $Processes_After.

Compare-Object porównać dwa zestawy obiektów procesu przechowywanych w zmiennych $Processes_Before i $Processes_After. Dane wyjściowe wyświetlają różnicę, notepad.exe, z obiektu $Processes_After.

Parametry

-CaseSensitive

Wskazuje, że w porównaniach powinna być uwzględniana wielkość liter.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Culture

Określa kulturę do użycia na potrzeby porównań.

Właściwości parametru

Typ:String
Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-DifferenceObject

Określa obiekty, które są porównywane z odwołania obiektów.

Właściwości parametru

Typ:

PSObject[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:1
Obowiązkowe:True
Wartość z potoku:True
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-ExcludeDifferent

Wskazuje, że to polecenie cmdlet wyświetla tylko cechy porównywanych obiektów, które są równe. Różnice między obiektami są odrzucane.

Użyj ExcludeDifferent z IncludeEqual, aby wyświetlić tylko wiersze zgodne między odwołania i różnicy obiektów.

Jeśli ExcludeDifferent jest określona bez IncludeEqual, nie ma żadnych danych wyjściowych.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-IncludeEqual

includeEqual wyświetla dopasowania między a różnicą obiektów.

Domyślnie dane wyjściowe zawierają również różnice między odwołaniami a różnicami obiektów.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-PassThru

Jeśli używasz parametru PassThru, Compare-Object pomija psCustomObject otoki wokół porównywanych obiektów i zwraca różne obiekty bez zmian.

Właściwości parametru

Typ:SwitchParameter
Domyślna wartość:False
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-Property

Określa tablicę właściwości odwołania i różnicy obiektów do porównania.

Właściwości parametru

Typ:

Object[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-ReferenceObject

Określa tablicę obiektów używanych jako odwołanie do porównania.

Właściwości parametru

Typ:

PSObject[]

Domyślna wartość:None
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:0
Obowiązkowe:True
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

-SyncWindow

Określa liczbę sąsiednich obiektów, które Compare-Object sprawdza podczas wyszukiwania dopasowania w kolekcji obiektów. Compare-Object sprawdza sąsiadujące obiekty, gdy nie znajduje obiektu w tej samej pozycji w kolekcji. Wartość domyślna to [Int32]::MaxValue, co oznacza, że Compare-Object sprawdza całą kolekcję obiektów.

Właściwości parametru

Typ:Int32
Domyślna wartość:[Int32]::MaxValue
Obsługuje symbole wieloznaczne:False
DontShow:False

Zestawy parametrów

(All)
Position:Named
Obowiązkowe:False
Wartość z potoku:False
Wartość z potoku według nazwy właściwości:False
Wartość z pozostałych argumentów:False

CommonParameters

To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.

Dane wejściowe

PSObject

Obiekt można wysłać w dół potoku do parametru DifferenceObject.

Dane wyjściowe

None

Jeśli odwołanie do obiektu i różnicy są takie same, nie ma żadnych danych wyjściowych.

PSCustomObject

Jeśli obiekty są inne, Compare-Object opakowuje różne obiekty w otoce PSCustomObject z właściwością SideIndicator, aby odwołać się do różnic. Jeśli używasz parametru PassThru, Compare-Object pomija otokę PSCustomObject wokół porównywanych obiektów i zwraca różne obiekty bez zmian.