powershell二维数组比较错误

时间:2014-11-20 13:15:54

标签: powershell

我正在尝试比较两个数组,并希望删除重复值。这是我得到的代码:

if(($run -ne $null) -and ($data -ne $null)) {       
    $remains = Compare-Object -ReferenceObject $data -DifferenceObject $run -PassThru
    echo "$remains" 
}

并且变量包含以下数据,尽管$run包含数据,但它仍然提示错误。

$data - 二维数组

[d13 , m0051]
[d13 , m0052]
[d21 , m0083]
[d21 , m0084]
[d26 , m0103]
[d33 , m0131]
[d33 , m0132]
[d34 , m0136]

$run - 二维数组

[d13 , m0052]
[d21 , m0084]
[d26 , m0103]
[d33 , m0132]
[d34 , m0136]

错误:

Compare-Object : Cannot bind argument to parameter 'DifferenceObject' because it is null.
At e:\b.ps1:84 char:70
+             $remains = Compare-Object -ReferenceObject $data -DifferenceObject <<<<  $run -PassThru
    + CategoryInfo          : InvalidData: (:) [Compare-Object], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObje
   ctCommand

知道问题出在哪里?在发布之前,我已经尝试过谷歌搜索并花了很多时间。

1 个答案:

答案 0 :(得分:0)

你是如何创建$ run和$ data的?

以下是我尝试的方法:

$run = @()
$run += ,@("d13", "m0051")
$run += ,@("d13", "m0052")
$run += ,@("d21", "m0083")
$run += ,@("d21", "m0084")
$run += ,@("d26", "m0103")
$run += ,@("d33", "m0131")
$run += ,@("d34", "m0136")

$data = @()
$data += ,@("d13", "m0052")
$data += ,@("d21", "m0084")
$data += ,@("d26", "m0103")
$data += ,@("d33", "m0132")
$data += ,@("d34", "m0136")
if(($run -ne $null) -and ($data -ne $null)) {       
    $remains = Compare-Object -ReferenceObject $data -DifferenceObject $run -PassThru
    write-output $remains
}

输出是4个元素

d13
m0051
d21
m0083
d33
m0131
d33
m0132