Compare-Object cmdlet是否有办法预测$ Null值?
例如,当我尝试比较像这样的2个值时:
Compare-Object -ReferenceObject $Value1 -DifferenceObject $Value2
我经常收到以下错误:
Cannot bind argument to parameter 'ReferenceObject' because it is null
我的问题是:有没有办法说:如果其中任何一个等于$ null;做点什么
答案 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