比较powershell中的两个数组,包括订单

时间:2015-09-03 08:26:20

标签: arrays powershell

我的情况很简单,我有2个阵列,有3个元素。元素99%将是相同的,但顺序将是不同的。我需要知道订单是否正确/匹配。以下是简化情况。

[System.Collections.ArrayList] $aNICOrderOne = @("IBR","Service", "Admin")
[System.Collections.ArrayList] $aNICOrder = @("Service","IBR", "Admin")
$CompareNICOrderOne = Compare-Object $aNICOrder $aNICOrderOne -PassThru
if ("$CompareNICOrderOne" -eq "") {
  Write-Host "All good"
} else {
  Write-Host "Not good (expected $aNicOrderOne) - provided ($anicOrder)" 
} 

不幸的是上面返回“”这意味着在比较之后两个阵列都是相同的,理论上它们只是对我来说顺序很重要,在这种情况下它不是我想要的。

2 个答案:

答案 0 :(得分:2)

如果你确定只有3个元素,你可以直接在循环中比较它们。设置一个标志,如果元素不匹配,您可以使用该标志。

$orderFlag = $false

for ($i = 0; $i -lt 3; $i++) {
  if ($aNICOrderOne[$i] -ne $aNICOrder[$i] ) {
    $orderFlag = $true
    break
  }
}

if($orderFlag) {
  write-host "Order not correct"
}
else {
  write-host "All good"
}

答案 1 :(得分:0)

这也可以使用 SyncWindow 参数解决。

❯ [System.Collections.ArrayList] $aNICOrderOne = @("IBR","Service", "Admin")
❯ [System.Collections.ArrayList] $aNICOrder = @("Service","IBR", "Admin")
❯ Compare-Object $aNICOrder $aNICOrderOne -PassThru -SyncWindow 0

IBR
Service
Service
IBR
相关问题