PowerShell 和 JSON - 如何检查具有多个值的 JSON 变量是否包含来自列表变量的值



我的 JSON 包含此部分,EnvironmentIds变量中有多个值:

Name: Test
EnvironmentIds : {Environments-102, Environments-103}

如果我有具有单个值的简单变量$ENV,我将知道如何检查该值是否存在于该列表中。

$ENVIRONMENT="Environments-103"
$json | ForEach-Object {
if ($_.EnvironmentIds -contains "$ENVIRONMENT") {
Write-Host($_.Name,$ENVIRONMENT)
}

但是,如果$ENVIRONMENT不是单个值而是一个列表,我该怎么办:

$ENVIRONMENT =  @ ("Environments-103", "Environments-104")

如何检查此列表中的元素是否属于 - 它包含在EnvironmentIdsjson 列表中? 我想从 JSON 值中包含的列表中打印该特定值。

但是

,如果$ENVIRONMENT不是单个值而是一个列表,我该怎么办:

Where-Object自然适合这个

$data = @{
Name =  "Test"
EnvironmentIds = "Environments-102", "Environments-103"
}
$ENVIRONMENT = "Environments-103", "Environments-104"
$matches = $ENVIRONMENT | Where-Object { $data.EnvironmentIds -eq $_ }
Write-Host $matches

请注意,-eq适用于数组(1,2,3,4,5 -eq 4结果为4(。以上打印:

环境-103

如果有多个匹配项,它将打印多个结果。

当然,你可以扭转局面,同样的事情:

$matches = $data.EnvironmentIds | Where-Object { $ENVIRONMENT -eq $_ }

最新更新