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