powershell - 如何使用powershell对数组进行一一比较

标签 powershell

如何使用 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/

相关文章:

powershell - PowerShell 是否有官方文字/保留符号引用?

powershell - 尝试访问区域 eu-west-1 中的服务的 GET-S3Bucket 名称解析失败

windows - 在大型目录结构上运行时出现元数据导出错误

正则表达式 anchor 字符串

powershell - 我可以在输出期间使用 Select-Object/Export-CSV 转换对象属性吗?

PowerShell : retrieve file from GitHub

string - 如何合并用于创建和删除的路径和文件名

powershell - PowerShell 中的代理函数不接受管道输入

asp.net - 在Docker容器中运行ASP.NET 4.6应用程序-站点始终为404s

PowerShell 相当于 grep -f