通过PowerShell访问JSON数组

通过PowerShell访问JSON数组,json,powershell,Json,Powershell,我正在尝试使用PowerShell访问包含字符串数组的JSON属性 JSON { "id": "00000000-0000-0000-0000-000000000000", "teamName": "Team A", "securityGroups": [{ "name": "Security Group 1", "members:": ["abc@mail.com", "def@mail.com", "ghi@mail.com"] }, {

我正在尝试使用PowerShell访问包含字符串数组的JSON属性

JSON

{
  "id": "00000000-0000-0000-0000-000000000000",
  "teamName": "Team A",
  "securityGroups": [{
      "name": "Security Group 1",
      "members:": ["abc@mail.com", "def@mail.com", "ghi@mail.com"]
    },
    {
    "name": "Securiy Group 2",
    "members:": ["123@mail.com", "456@mail.com", "789@mail.com"]
  }]
}
PowerShell

$json = Get-Content 'test.json' | ConvertFrom-Json 

ForEach($group in $json.securityGroups)
{
    Write-Host "Team: $($group.name)"

    ForEach($member in $group.members)
    {
        Write-Host "Member: $($member)"
    }
}
输出

Team: Security Group 1
Team: Securiy Group 2
如您所见,仅显示安全组的名称(securityGroup.name)。我无法访问包含字符串数组(包含电子邮件)的securityGroups.members节点。我的目标是存储这个字符串列表并循环它们

当我检查$json对象在PS中的外观时,我得到以下结果:

PS C:\Users\XYZ> $json

id                                   teamName securityGroups                                                                                         
--                                   -------- --------------                                                                                         
00000000-0000-0000-0000-000000000000 Team A   {@{name=Security Group 1; members:=System.Object[]}, @{name=Securiy Group 2; members:=System.Object[]}}
我在这里遗漏了什么?

您可以使用:

$json = Get-Content 'test.json' | ConvertFrom-Json 

ForEach ($group in $json.securityGroups)
{
    Write-Host "Team: $($group.name)"

    ForEach ($member in $group."members:")
    {
        Write-Host "Member: $($member)"
    }
}

您还没有注意到成员键的末尾包含冒号。否则它会给你错误的结果。

你差点让我。。。
members:
键中有一个冒号,这意味着如果这是正确的(我怀疑),您需要执行:
ForEach($group中的成员。'members:')
@iRon不敢相信我漏掉了额外的冒号,谢谢。我在属性名中省略了冒号,但奇怪的是,当我运行代码时仍然没有得到任何结果。编辑:nvm,必须刷新我的$json属性。多余的结肠最终成了罪魁祸首。谢谢