将数组与 null 元素进行比较
Compare array with null elements
我有两个数组有超过 500,000 个值,需要进行比较以找出差异。数组中的某些值是 $null
。当我尝试执行以下代码时出现错误 Compare-Object : Cannot bind argument to parameter 'ReferenceObject' because it is null
是否有任何解决此问题的方法,或者是否有更好更快的方法来找出差异?我只对 variance/difference.
的计数感兴趣
谢谢!
示例代码:
$objSource = @('a', $null, 'c')
$objTarget = @('a', 'b','c')
Compare-Object -ReferenceObject $objSource -DifferenceObject $objTarget | Measure
错误信息:
Compare-Object : Cannot bind argument to parameter 'ReferenceObject' because it is null . At line:4 char:32
+ Compare-Object -ReferenceObject <<<< $objSource -DifferenceObject $objTarget
+ CategoryInfo : InvalidData: (:) [Compare-Object], ParameterBindingValid ationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft .PowerShell.Commands.CompareObjectCommand
documentation 声明如果 -ReferenceObject
或 -DifferenceObject
是 $null
就会发生这种情况,但如果这些对象的任何元素是,则不会真正涵盖。
NOTE: If the reference set or the difference set is null ($null), Compare-Object generates a terminating error.
快速解决方法是用控制字符或类似的东西替换那些 $null
元素。
$objSource = @('a', $null, 'c') -replace "^$","null"
$objTarget = @('a', 'b','c') -replace "^$","null"
Compare-Object -ReferenceObject $objSource -DifferenceObject $objTarget
-replace
将从字符串 "null" 的数组中删除那些空条目。所以我们现在可以直观地了解该数据。该文本不太可能是自然元素,但您仍然必须保持警惕。如果 null 不合适,我会推荐百吉饼作为关键字!
这似乎有效:
$objSource = @('a', $null, 'c')
$objTarget = @('a', 'b','c')
Compare-Object -ReferenceObject ([string[]]$objSource) -DifferenceObject ([string[]]$objTarget) | Measure
我有两个数组有超过 500,000 个值,需要进行比较以找出差异。数组中的某些值是 $null
。当我尝试执行以下代码时出现错误 Compare-Object : Cannot bind argument to parameter 'ReferenceObject' because it is null
是否有任何解决此问题的方法,或者是否有更好更快的方法来找出差异?我只对 variance/difference.
的计数感兴趣谢谢!
示例代码:
$objSource = @('a', $null, 'c')
$objTarget = @('a', 'b','c')
Compare-Object -ReferenceObject $objSource -DifferenceObject $objTarget | Measure
错误信息:
Compare-Object : Cannot bind argument to parameter 'ReferenceObject' because it is null . At line:4 char:32
+ Compare-Object -ReferenceObject <<<< $objSource -DifferenceObject $objTarget
+ CategoryInfo : InvalidData: (:) [Compare-Object], ParameterBindingValid ationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft .PowerShell.Commands.CompareObjectCommand
documentation 声明如果 -ReferenceObject
或 -DifferenceObject
是 $null
就会发生这种情况,但如果这些对象的任何元素是,则不会真正涵盖。
NOTE: If the reference set or the difference set is null ($null), Compare-Object generates a terminating error.
快速解决方法是用控制字符或类似的东西替换那些 $null
元素。
$objSource = @('a', $null, 'c') -replace "^$","null"
$objTarget = @('a', 'b','c') -replace "^$","null"
Compare-Object -ReferenceObject $objSource -DifferenceObject $objTarget
-replace
将从字符串 "null" 的数组中删除那些空条目。所以我们现在可以直观地了解该数据。该文本不太可能是自然元素,但您仍然必须保持警惕。如果 null 不合适,我会推荐百吉饼作为关键字!
这似乎有效:
$objSource = @('a', $null, 'c')
$objTarget = @('a', 'b','c')
Compare-Object -ReferenceObject ([string[]]$objSource) -DifferenceObject ([string[]]$objTarget) | Measure