遍历 Invoke-WebRequest JSON 结果

Iterating through Invoke-WebRequest JSON result

我正在尝试通过 powershell 迭代 webrequest 调用的结果

$response = Invoke-WebRequest -URI $apiUri -Method Get -UseBasicParsing
$response

结果:

StatusCode        : 200
StatusDescription : OK
Content           : {"tenants":[{"name":"default","active":true},{"name":"tenant1","active":true}]}
RawContent        : HTTP/1.1 200 OK
...

使用 ConvertFromJson

$parsed = $response.Content | ConvertFrom-Json
$parsed

结果:

tenants : {@{name=default; active=True}, @{name=tenant1; active=True}}

现在,我想像这样列出所有“名称”值

Name
--------
default
tenant1

我尝试使用此脚本对其进行迭代,但无法获得结果:

$parsed | Select-Object -Property name | ForEach-Object {
    Write-Host $_.name
}

下面的代码将输出 table 个名称:

$json = '{"tenants":[{"name":"default","active":true},{"name":"tenant1","active":true}]}'

$data = $json | ConvertFrom-Json

$data.tenants | ft name

#name
#----
#default
#tenant1

如果您想将它们作为数组捕获到变量中,您可以使用名为 Member Enumeration:

的功能
$names = $data.tenants.name;

$names
#default
#tenant1