共用方式為


Compare-Object

比較兩組物件。

語法

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

描述

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

比較結果將指出屬性值是否只在參照組的物件中出現 (以 <= 符號表示)、是否只在差異組的物件中出現 (以 => 符號表示),或者在指定 IncludeEqual 參數的情況下,是否同時出現於兩組物件 (以 == 符號表示)。

參數

-CaseSensitive

表示比較應區分大小寫。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Culture <string>

指定比較所使用的文化特性。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-DifferenceObject <PSObject[]>

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

必要?

true

位置?

2

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-ExcludeDifferent

只顯示所比較物件結果為相等的特性。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-IncludeEqual

顯示所比較物件結果為相等的特性。預設情況下,只會顯示參考物件和差異物件之間不同的特性。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-PassThru

傳遞有差異的物件給管線。根據預設,此 Cmdlet 不會產生任何輸出。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Property <Object[]>

指定參照物件和差異物件所要比較的屬性。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-ReferenceObject <PSObject[]>

供比較使用的參照物件。

必要?

true

位置?

1

預設值

接受管線輸入?

false

接受萬用字元?

false

-SyncWindow <int>

定義搜尋區域,在沒有相符的項目時嘗試將順序重新同步。預設值為 [Int32]::MaxValue。

必要?

false

位置?

named

預設值

[Int32]::MaxValue

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.Management.Automation.PSObject

您也可以經由管道將 DifferenceObject 物件輸出至 Compare-Object。

輸出

無,或是不同的物件

當您使用 PassThru 參數時,Compare-Object 會傳回不同的物件。否則,這個 Cmdlet 不會產生任何輸出。

範例 1

C:\PS>compare-object -referenceobject $(get-content C:\test\testfile1.txt) -differenceobject $(get-content C:\test\testfile2.txt)

描述
-----------
這個命令將兩個文字檔的內容做比較。只顯示出現在某個檔案或另一個檔案中的行,而不是同時出現在兩個檔案中的行。





範例 2

C:\PS>compare-object -referenceobject $(get-content C:\Test\testfile1.txt) -differenceobject $(get-content C:\Test\testfile2.txt) -includeequal

描述
-----------
這個命令將兩個文字檔內容中的每一行做比較,並顯示兩個檔案內容的所有行,指出每一行出現於檔案的情形:只在 Textfile1.txt 中、只在 Textfile2.txt 中,或同時在兩個檔案中出現。





範例 3

C:\PS>$processes_before = get-process

C:\PS> notepad

C:\PS> $processes_after  = get-process

C:\PS> compare-object -referenceobject $processes_before -differenceobject $processes_after

描述
-----------
這些命令會將兩組處理序物件做比較。

第一個命令會使用 Get-Process Cmdlet 取得電腦上的處理序,它會將處理序儲存在 $processes_before 變數中。

第二個命令會啟動 [記事本]。

第三個命令會再次使用 Get-Process Cmdlet,並將產生的處理序儲存在 $processes_after 變數中。

第四個命令會使用 Compare-Object Cmdlet 比較兩組處理序物件。它會顯示兩者之間的差異,包括新的 [記事本] 執行個體。





請參閱

概念

Group-Object
Measure-Object
Sort-Object
ForEach-Object
New-Object
Select-Object
Tee-Object
Where-Object