Compare-Object
Jämför två uppsättningar med objekt.
Syntax
Compare-Object
[-ReferenceObject] <PSObject[]>
[-DifferenceObject] <PSObject[]>
[-SyncWindow <Int32>]
[-Property <Object[]>]
[-ExcludeDifferent]
[-IncludeEqual]
[-PassThru]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
Description
Cmdleten Compare-Object
jämför två uppsättningar objekt. En uppsättning objekt är referensoch den andra uppsättningen objekt är skillnad.
Resultatet av jämförelsen anger om ett egenskapsvärde endast visas i -referensen -objektet (<=
) eller endast i skillnad objekt (=>
). Om parametern IncludeEqual används anger (==
) att värdet finns i båda objekten.
Om -referensen eller den skillnaden objekt är null ($null
), genererar Compare-Object
ett avslutande fel.
Vissa exempel använder splatting för att minska radlängden för kodexemplen. Mer information finns i about_Splatting. Och exemplen använder två textfiler, med varje värde på en separat rad.
Testfile1.txt
innehåller värdena: hund, ekorre och fågel.
Testfile2.txt
innehåller värdena: katt, fågel och racoon.
Exempel
Exempel 1: Jämför innehållet i två textfiler
I det här exemplet jämförs innehållet i två textfiler. Utdata visar bara de rader som skiljer sig mellan filerna.
Testfile1.txt
är referens objekt (<=
) och Testfile2.txt
är skillnad objekt (=>
).
Rader med innehåll som visas i båda filerna visas inte.
Compare-Object -ReferenceObject $(Get-Content -Path C:\Test\Testfile1.txt) -DifferenceObject $(Get-Content -Path C:\Test\Testfile2.txt)
InputObject SideIndicator
----------- -------------
cat =>
racoon =>
dog <=
squirrel <=
Exempel 2: Jämför varje innehållsrad i två textfiler
I det här exemplet används IncludeEqual- för att jämföra varje innehållsrad i två textfiler. Alla rader med innehåll från båda filerna visas.
SideIndicator anger om raden visas i Testfile1.txt
-referensen objekt (<=
), Testfile2.txt
skillnad objekt (=>
), eller båda filerna (==
).
$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 <=
Exempel 3: Jämför varje innehållsrad och exkludera skillnaderna
I det här exemplet används parametrarna IncludeEqual och ExcludeDifferent för att jämföra varje innehållsrad i två textfiler.
Eftersom kommandot använder parametern ExcludeDifferent innehåller utdata endast rader som finns i båda filerna, vilket visas av 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 ==
Exempel 4: Jämför två uppsättningar med processobjekt
I det här exemplet jämförs två uppsättningar objekt som innehåller datorns processer som körs.
$Processes_Before = Get-Process
notepad.exe
$Processes_After = Get-Process
Compare-Object -ReferenceObject $Processes_Before -DifferenceObject $Processes_After
InputObject SideIndicator
----------- -------------
System.Diagnostics.Process (notepad) =>
Cmdleten Get-Process
hämtar datorns processer som körs och lagrar dem i variabeln $Processes_Before
.
Programmet notepad.exe startas.
Get-Process
hämtar datorns uppdaterade lista över processer som körs och lagrar dem i variabeln $Processes_After
.
Compare-Object
jämföra de två uppsättningarna processobjekt som lagras i variablerna $Processes_Before
och $Processes_After
. Utdata visar skillnaden, notepad.exe, från objektet $Processes_After
.
Parametrar
-CaseSensitive
Anger att jämförelser ska vara skiftlägeskänsliga.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Culture
Anger vilken kultur som ska användas för jämförelser.
Typ: | String |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-DifferenceObject
Anger de objekt som jämförs med referens objekt.
Typ: | PSObject[] |
Position: | 1 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
-ExcludeDifferent
Anger att denna cmdlet endast visar egenskaperna för jämförd objekt som är lika med. Skillnaderna mellan objekten ignoreras.
Använd ExcludeDifferent med IncludeEqual om du bara vill visa de rader som matchar mellan referens och skillnad objekt.
Om ExcludeDifferent anges utan IncludeEqualfinns det inga utdata.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-IncludeEqual
IncludeEqual visar matchningarna mellan -referensen och skillnad objekt.
Som standard innehåller utdata också skillnaderna mellan -referensen och skillnad objekt.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-PassThru
När du använder parametern PassThru utelämnar Compare-Object
PSCustomObject wrapper runt de jämförda objekten och returnerar de olika objekten oförändrade.
Typ: | SwitchParameter |
Position: | Named |
Standardvärde: | False |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-Property
Anger en matris med egenskaper för referens och skillnad objekt att jämföra.
Typ: | Object[] |
Position: | Named |
Standardvärde: | None |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-ReferenceObject
Anger en matris med objekt som används som referens för jämförelse.
Typ: | PSObject[] |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
-SyncWindow
Anger antalet intilliggande objekt som Compare-Object
inspekterar när du letar efter en matchning i en samling objekt.
Compare-Object
undersöker närliggande objekt när det inte hittar objektet i samma position i en samling. Standardvärdet är [Int32]::MaxValue
, vilket innebär att Compare-Object
undersöker hela objektsamlingen.
Typ: | Int32 |
Position: | Named |
Standardvärde: | [Int32]::MaxValue |
Obligatorisk: | False |
Godkänn pipeline-indata: | False |
Godkänn jokertecken: | False |
Indata
Du kan skicka ett objekt nedåt i pipelinen till parametern DifferenceObject.
Utdata
None
Om den referensen objekt och den skillnaden objekt är desamma, finns det inga utdata.
Om objekten är olika omsluter Compare-Object
de olika objekten i en PSCustomObject
-omslutning med en egenskap SideIndicator för att referera till skillnaderna. När du använder parametern PassThru utelämnar Compare-Object
PSCustomObject
-omslutningen runt de jämförda objekten och returnerar de olika objekten oförändrade.