Compare-Object
2 つのオブジェクト セットを比較します。
構文
Compare-Object
[-ReferenceObject] <PSObject[]>
[-DifferenceObject] <PSObject[]>
[-SyncWindow <Int32>]
[-Property <Object[]>]
[-ExcludeDifferent]
[-IncludeEqual]
[-PassThru]
[-Culture <String>]
[-CaseSensitive]
[<CommonParameters>]
説明
Compare-Object
コマンドレットは、2 セットのオブジェクトを比較します。 オブジェクトのセットの 1 つは 参照で、もう 1 つのオブジェクト セットは の違いです。
比較の結果は、プロパティ値が 参照 オブジェクト (<=
) にのみ表示されたか、差分 オブジェクト (=>
) にのみ表示されたかを示します。
IncludeEqual パラメーターが使用されている場合、(==
) は値が両方のオブジェクトに含まれているかどうかを示します。
参照 またはオブジェクト 差が null ($null
) の場合、Compare-Object
終了エラーが発生します。
一部の例では、スプラッティングを使用してコード サンプルの行長を短くします。 詳細については、about_Splattingを参照してください。 また、この例では 2 つのテキスト ファイルを使用し、それぞれの値を個別の行に配置します。
Testfile1.txt
には、犬、リス、鳥の値が含まれています。
Testfile2.txt
には、cat、bird、racoon という値が含まれています。
例
例 1: 2 つのテキスト ファイルの内容を比較する
次の使用例は、2 つのテキスト ファイルの内容を比較します。 出力には、ファイル間で異なる行のみが表示されます。
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: 2 つのテキスト ファイル内のコンテンツの各行を比較する
この例では、 IncludeEqual を使用して、2 つのテキスト ファイル内のコンテンツの各行を比較します。 両方のファイルのすべてのコンテンツ行が表示されます。
SideIndicator は、線が Testfile1.txt
参照オブジェクト (<=
)、Testfile2.txt
difference オブジェクト (=>
)、または両方のファイル (==
) に表示されるかどうかを指定します。
$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 パラメーター を使用して、2 つのテキスト ファイル内のコンテンツの各行を比較します。
コマンドは 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: 2 セットのプロセス オブジェクトを比較する
この例では、コンピューターの実行中のプロセスを含むオブジェクトの 2 つのセットを比較します。
$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
コマンドレットは、コンピューターの実行中のプロセスを取得し、それらを $Processes_Before
変数に格納します。
notepad.exe アプリケーションが起動します。
Get-Process
実行中のプロセスのコンピューターの更新されたリストを取得し、それらを $Processes_After
変数に格納します。
この Compare-Object
は、 $Processes_Before
変数と $Processes_After
変数に格納されている2つのプロセスオブジェクトのセットを比較します。 出力には、$Processes_After
オブジェクトとの差 notepad.exeが表示されます。
パラメーター
-CaseSensitive
比較で大文字と小文字が区別されることを示します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Culture
比較に使用するカルチャを指定します。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-DifferenceObject
参照 オブジェクトと比較されるオブジェクトを指定します。
型: | PSObject[] |
配置: | 1 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-ExcludeDifferent
このコマンドレットは、等しい比較対象のオブジェクトの特性のみを表示することを示します。 オブジェクト間の違いは破棄されます。
IncludeEqual excludeDifferent 使用して、参照と の相違点の間で一致する行のみを表示します。
IncludeEqual 指定せずに ExcludeDifferent指定した場合、出力はありません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-IncludeEqual
IncludeEqual 、参照 と の相違 オブジェクト間の一致が表示されます。
既定では、出力には、参照 と の相違 オブジェクトの違いも含まれます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-PassThru
PassThru パラメーターを使用する場合、Compare-Object
は比較対象のオブジェクトを囲む PSCustomObject ラッパーを省略し、異なるオブジェクトを変更せずに返します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Property
比較するオブジェクトの 参照 と の相違 プロパティの配列を指定します。
型: | Object[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ReferenceObject
比較の参照として使用されるオブジェクトの配列を指定します。
型: | PSObject[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-SyncWindow
オブジェクトのコレクション内の一致を検索するときに検査 Compare-Object
隣接するオブジェクトの数を指定します。
Compare-Object
は、コレクション内の同じ位置にあるオブジェクトが見つからない場合に、隣接するオブジェクトを調べます。 既定値は [Int32]::MaxValue
です。つまり、Compare-Object
はオブジェクト コレクション全体を調べます。
型: | Int32 |
配置: | Named |
規定値: | [Int32]::MaxValue |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
パイプラインから DifferenceObject パラメーターにオブジェクトを送信できます。
出力
None
参照オブジェクトと差分オブジェクトが同じ場合、出力はありません。
オブジェクトが異なる場合、Compare-Object
は、異なるオブジェクトを参照するための SideIndicator プロパティを使用して、異なるオブジェクトを PSCustomObject
ラッパーにラップします。
PassThru パラメーターを使用すると、Compare-Object
は比較されたオブジェクトを囲むPSCustomObject
ラッパーを省略し、異なるオブジェクトを変更せずに返します。