共用方式為


Compare-Object

比較兩組物件。

語法

All

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

Description

Compare-Object Cmdlet 會比較兩組物件。 一組對像是 參考,另一組對像是差異。

比較的結果會指出屬性值只出現在 參考 物件(<=)中,還是只出現在 差異 物件中(=>)。 如果使用 IncludeEqual 參數,則 (==) 表示值在這兩個物件中。

如果 參考差異 物件為 null ($null),Compare-Object 會產生終止錯誤。

某些範例會使用噴濺來減少程式代碼範例的行長度。 如需詳細資訊,請參閱 about_Splatting。 而且,這些範例會使用兩個文本檔,每個值都位於個別行。 Testfile1.txt 包含值:狗、松鼠和鳥。 Testfile2.txt 包含值:cat、bird 和 racoon。

範例

範例 1:比較兩個文本文件的內容

此範例會比較兩個文本文件的內容。 輸出只會顯示檔案之間不同行。 Testfile1.txt參考 物件(<=),而 Testfile2.txt差異 物件(=>)。

不會顯示兩個檔案中出現內容的行。

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

範例 2:比較兩個文本檔中每一行內容

此範例會使用 includeEqual 來比較兩個文字檔中每一行的內容。 這兩個檔案中的所有內容行都會顯示。

SideIndicator 指定 Testfile1.txt參考 物件 (<=),Testfile2.txt差異 物件(=>),或兩個檔案 (==)。

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

範例 3:比較每一行內容並排除差異

這個範例 會使用 includeEqualExcludeDifferent 參數來比較兩個文本檔中每一行內容。

因為命令使用 ExcludeDifferent 參數,因此輸出只會包含這兩個檔案中包含的行,如 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        ==

範例 4:比較兩組進程物件

此範例會比較兩組對象,這些物件包含計算機的執行中進程。

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

Get-Process Cmdlet 會取得電腦的執行中進程,並將其儲存在 $Processes_Before 變數中。

notepad.exe 應用程式已啟動。

Get-Process 取得計算機的已更新執行進程清單,並將其儲存在 $Processes_After 變數中。

Compare-Object 比較儲存在 $Processes_Before$Processes_After 變數中的兩組進程物件。 輸出會顯示 物件的差異,$Processes_After

參數

-CaseSensitive

表示比較應該區分大小寫。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Culture

指定要用於比較的文化特性。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-DifferenceObject

指定與 參考 物件比較的物件。

參數屬性

類型:

PSObject[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:1
必要:True
來自管線的值:True
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ExcludeDifferent

指出這個 Cmdlet 只會顯示相等之比較物件的特性。 會捨棄對象之間的差異。

使用 ExcludeDifferent 搭配 IncludeEqual,只顯示 參考差異 對象之間的相符行。

如果未指定 excludeDifferent IncludeEqual,則沒有輸出。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-IncludeEqual

IncludeEqual 會顯示 參考差異 物件之間的相符專案。

根據預設,輸出也會包含 參考差異 對象之間的差異。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-PassThru

當您使用 PassThru 參數時,Compare-Object 省略比較物件周圍的 PSCustomObject 包裝函式,並傳回不同的物件,保持不變。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Property

指定要比較之 參考差異 對象的屬性陣列。

參數屬性

類型:

Object[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-ReferenceObject

指定做為比較參考的物件陣列。

參數屬性

類型:

PSObject[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-SyncWindow

指定在物件集合中尋找相符專案時,Compare-Object 檢查的相鄰物件數目。 Compare-Object 在集合中找不到相同位置的物件時,檢查相鄰的物件。 默認值為 [Int32]::MaxValue,這表示 Compare-Object 會檢查整個物件集合。

參數屬性

類型:Int32
預設值:[Int32]::MaxValue
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

PSObject

您可以將物件向下傳送至 DifferenceObject 參數。

輸出

None

如果 參考 物件和 差異 物件相同,則沒有輸出。

PSCustomObject

如果物件不同,Compare-Object 使用 PSCustomObject 屬性包裝 包裝函式中的不同物件,以參考差異。 當您使用 PassThru 參數時,Compare-Object 省略比較物件周圍的 PSCustomObject 包裝函式,並傳回不同的物件,不會變更。