$ null数组上的Compare-Object

时间:2013-03-18 21:50:23

标签: object powershell compare

Compare-Object cmdlet是否有办法预测$ Null值?

例如,当我尝试比较像这样的2个值时:

Compare-Object -ReferenceObject $Value1 -DifferenceObject $Value2 

我经常收到以下错误:

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

我的问题是:有没有办法说:如果其中任何一个等于$ null;做点什么

4 个答案:

答案 0 :(得分:4)

比较对象的帮助说:

如果引用集或差集为null($ null),则Compare-Object会生成终止错误。

所以你唯一的选择似乎是陷阱或尝试/捕获。

答案 1 :(得分:1)

 if($Value1 -eq $NULL){
     return
 }
 Compare-Object -ReferenceObject $Value1 -DifferenceObject $Value2 

答案 2 :(得分:0)

如果为null,则会执行此操作:

if ($Value1 -ne $null -and $Value2 -ne $null) {
    Compare-Object -ReferenceObject $Value1 -DifferenceObject $Value2
}
else {
    #do something
}

答案 3 :(得分:0)

您可以使用一种解决方法

首先,创建两个空数组对象

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

现在

检查源数组是否不为null并将它们添加到以前创建的数组

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

现在,您可以确保参考数组和差分数组即使为空也不为空,并且可以安全地进行比较

Compare-object -referenceObject $reference -differenceObject $difference