我的 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")
如何检查此列表中的元素是否属于 - 它包含在EnvironmentIds
json 列表中? 我想从 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 $_ }