8

Compare-Objectコマンドレットが$Null値を予測する方法はありますか?

たとえば、次のように2つの値を比較しようとしている場合:

Compare-Object -ReferenceObject $Value1 -DifferenceObject $Value2 

私は一般的に次のエラーを受け取ります:

Cannot bind argument to parameter 'ReferenceObject' because it is null

私の質問は次のとおりです。言う方法はありますか:それらのいずれかが$nullに等しい場合; 何かをする

4

5 に答える 5

17

これはnull値を受け入れます:

Compare-Object -ReferenceObject @($Value1 | Select-Object) -DifferenceObject @($Value2 | Select-Object)
于 2017-08-11T12:09:09.597 に答える
5

Compare-objectのヘルプは次のように述べています。

参照セットまたは差分セットがnull($ null)の場合、Compare-Objectは終了エラーを生成します。

したがって、あなたの唯一の選択肢は、罠かトライ/キャッチのように思われるでしょう。

于 2013-03-18T21:58:32.653 に答える
1
 if($Value1 -eq $NULL){
     return
 }
 Compare-Object -ReferenceObject $Value1 -DifferenceObject $Value2 
于 2013-03-19T20:10:40.763 に答える
1

nullの場合、これは何かを行います。

if ($Value1 -ne $null -and $Value2 -ne $null) {
    Compare-Object -ReferenceObject $Value1 -DifferenceObject $Value2
}
else {
    #do something
}
于 2017-08-11T17:14:10.500 に答える
0

使用できる回避策があります

まず、2つの空の配列オブジェクトを作成します

$reference = @()
$difference = @() 

nullでない場合はソース配列を確認し、以前に作成した配列に追加します

If( $array1 -ne $null ){ $reference.addrange($array1) 
If($array2 -ne $null) { $diffrence.addrange($array2) 

これで、参照配列と差分配列が空であってもnullにならないことが確実になり、安全に比較を行うことができます。

Compare-object -referenceObject $reference -differenceObject $difference 
于 2020-07-10T22:59:22.407 に答える