興味深い質問のように何かをしたいと思います。 Compare-Object
コマンドレットを使用するとします。
私は最後にいくつかのテストを行いました。-contains
は、オブジェクトへの参照がある場合、オブジェクトに対して意図したとおりに動作するように見えます。参照ではない同一のオブジェクトを含むcontainsを使用しようとすると、失敗します。
たとえば、この例を考えてみましょう。
$myArr = @(@{'Item 1'='Value 1'},@{'Item 2'='Value 2'},@{})
$ItemByVal= @{'Item 1'='Value 1'}
$ItemByRef = $myArr | select -First 1
Write-host "Compare using Contains by val: $($myArr -contains $UtemByVal)" -ForegroundColor Red
Write-Host "Comapre using contains By ref: $($myArr -contains $ItemByRef)" -ForegroundColor Green
ItemByVal
はcontainsを使用しても機能しません。
Compare-Object
コマンドレットは両方の方法を使用しても正常に動作します。参照や値で使うことができます。
Compare-Object $myArr $ItemByVal -ExcludeDifferent -IncludeEqual -PassThru
Compare-Object $myArr $ItemByRef -ExcludeDifferent -IncludeEqual -PassThru