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

PowerShell和JSON—如何检查具有多个值的JSON变量是否包含来自列表变量的值,json,powershell,Json,Powershell,My JSON在EnvironmentId变量中包含多个值的此部分: Name: Test EnvironmentIds : {Environments-102, Environments-103} 如果我使用单值的简单变量$ENV,我将知道如何检查该列表中是否存在该值 $ENVIRONMENT="Environments-103" $json | ForEach-Object { if ($_.EnvironmentIds -contains "$ENVIRONMENT") {

My JSON在
EnvironmentId
变量中包含多个值的此部分:

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不是单个值而是一个列表,我应该怎么做:

$ENVIRONMENT =  @ ("Environments-103", "Environments-104")
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
)。上述印刷品:

Environments-103 但是,如果$ENVIRONMENT不是单个值而是一个列表,我应该怎么做:

$ENVIRONMENT =  @ ("Environments-103", "Environments-104")
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
)。上述印刷品:

Environments-103
您好,Tomalak,谢谢您的帮助,但您更改了我当前迭代的对象$。\u。我不想那样。正如您所看到的,我已经在打印当前对象的名称,我正在使用$.\uwrite Host($.\uName…)对其进行迭代-保持当前迭代对我来说很重要。“ENVIRONMENT”的迭代应该是第二个,它与我当前的迭代相关,我同时从当前对象中提取名称。@AndreyDonald
data.EnvironmentIds | where object{$ENVIRONMENT-eq$}ForEach object{…}
Hi Tomalak,谢谢您的帮助,但是您更改了我当前迭代的对象$。\u。我不想那样。正如您所看到的,我已经在打印当前对象的名称,我正在使用$.\uwrite Host($.\uName…)对其进行迭代-保持当前迭代对我来说很重要。“ENVIRONMENT”的迭代应该是第二个,它与我当前的迭代相关,我同时从当前对象中提取名称。@AndreyDonald
data.EnvironmentIds | where object{$ENVIRONMENT-eq$}ForEach object{…}