次の方法で共有


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.txtdifference オブジェクト (=>)、または両方のファイル (==) に表示されるかどうかを指定します。

$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

入力

PSObject

パイプラインから DifferenceObject パラメーターにオブジェクトを送信できます。

出力

None

参照オブジェクトと差分オブジェクトが同じ場合、出力はありません。

PSCustomObject

オブジェクトが異なる場合、Compare-Object は、異なるオブジェクトを参照するための SideIndicator プロパティを使用して、異なるオブジェクトを PSCustomObject ラッパーにラップします。 PassThru パラメーターを使用すると、Compare-Object は比較されたオブジェクトを囲むPSCustomObjectラッパーを省略し、異なるオブジェクトを変更せずに返します。