powershell 配列同士の比較(差分取得)
$a = @("a", "b", "c"); $b = @("d", "b", "v"); Write-Host "---- same ----" $same = Compare-Object $a $b -IncludeEqual -ExcludeDifferent | Select-Object -ExpandProperty InputObject $same Write-Host "---- diff ----" $diff = Compare-Object $a $b | Select-Object -ExpandProperty InputObject $diff Write-Host "---- $a-$b ----" $diff = Compare-Object $a $b | Where-Object {$_.SideIndicator -eq "<="} | Select-Object -ExpandProperty InputObject $diff Write-Host "---- $b-$a (1) ----" $diff = Compare-Object $b $a | Where-Object {$_.SideIndicator -eq "<="} | Select-Object -ExpandProperty InputObject $diff Write-Host "---- $b-$a (2) ----" $diff = Compare-Object $a $b | Where-Object {$_.SideIndicator -eq "=>"} | Select-Object -ExpandProperty InputObject $diff
Select-Object -ExpandProperty InputObjectが分からなかったので、Bingちゃんに聞いてみたところ下記の回答。
Select-Object -ExpandProperty InputObjectは、Select-Objectコマンドレットを使用して、InputObjectプロパティを展開しています。
-ExpandPropertyパラメーターは、指定されたプロパティの値を展開し、その値を出力します。この場合、Compare-Objectコマンドレットの出力には、InputObjectプロパティが含まれており、その値が配列の要素です。
Select-Object -ExpandProperty InputObjectを使用することで、配列の要素だけが出力されます。受信したメッセージ. Select-Object -ExpandProperty InputObjectは、Select-Objectコマンドレットを使用して、
InputObjectプロパティを展開しています。-ExpandPropertyパラメーターは、指定されたプロパティの値を展開し、
その値を出力します。 この場合、Compare-Objectコマンドレットの出力には、InputObjectプロパティが含まれており、
その値が配列の要素です。Select-Object -ExpandProperty InputObjectを使用することで、配列の要素だけが出力されます。
---- same ---- b ---- diff ---- d v a c ---- a b c-d b v ---- a c ---- d b v-a b c (1) ---- d v ---- d b v-a b c (2) ---- d v