如何使用 powershell 逐一比较数组。
我尝试过 eq/match/like/contains/in。但仍然不能正常工作。多谢。
输入【数组】:
$array = @('确定','确定','确定','确定')
$array1 = @('确定','失败','确定','确定')
$array2 = @("确定")
预期输出:
$Array 比较 Array2 输出 True
$Array1 比较 Array2 输出 False
最佳答案
如果两个数组的元素(不仅仅是值)的顺序很重要(即两个数组应具有相同数量的元素,则元素值必须相同并且顺序出现的元素应该是相同的),你可以使用
@(Compare-Object $array1 $array2 -SyncWindow 0).Length -eq 0
如果元素在数组中出现的顺序无关紧要:
@(Compare-Object $array1 $array2).Length -eq 0
编辑
鉴于您的评论“如果数组中的所有值都正常,则输出 true,如果其中一个值不正常,则输出为 false”,您可以简单地执行以下操作:
$array = 'OK','OK','OK','OK'
# test if all elements are 'OK'
($array | Where-Object { $_ -ne 'OK' }).Count -eq 0 # outputs True
如果其中一个元素不“OK”,例如 $array1
$array1 = 'OK','failed','OK','OK'
# test if all elements are 'OK'
($array1 | Where-Object { $_ -ne 'OK' }).Count -eq 0 # outputs False
这里的“技巧”是将数组的各个元素通过管道传输到 Where-Object
子句。它充当过滤器,让所有不“正常”的元素通过。最后,我们只使用结果数组的 Count
属性,如果其中没有任何内容,则计数将为 0,即 True
关于powershell - 如何使用powershell对数组进行一一比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60340856/