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:比較每一行內容並排除差異
這個範例 會使用 includeEqual 和 ExcludeDifferent 參數來比較兩個文本檔中每一行內容。
因為命令使用 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
參數屬性
| 類型: | 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 包裝函式,並傳回不同的物件,不會變更。