You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell正确遍历多层JSON并输出指定成员信息?

解决PowerShell遍历多层JSON并按组输出成员信息的问题

假设的sample.json结构

先明确一个符合需求的sample.json示例结构(如果你的实际结构不同,对应调整路径即可):

{
  "teams": {
    "GROUP1": [
      {
        "name": "Alice Smith",
        "age": 32
      },
      {
        "name": "Bob Johnson",
        "age": 27
      }
    ],
    "GROUP2": [
      {
        "name": "Charlie Davis",
        "age": 35
      },
      {
        "name": "Diana Wilson",
        "age": 29
      }
    ]
  }
}

修正后的PowerShell脚本

保存为Get-GroupMembers.ps1即可实现需求:

param(
    [Parameter(Mandatory=$true)]
    [ValidateSet("GROUP1", "GROUP2")]
    [string]$GroupName
)

# 读取并解析JSON文件
$jsonContent = Get-Content -Path "./sample.json" -Raw | ConvertFrom-Json

# 定位目标组的成员列表
$groupMembers = $jsonContent.teams.$GroupName

# 遍历输出成员姓名与年龄
if ($groupMembers) {
    Write-Host "=== 组 $GroupName 的成员信息 ==="
    foreach ($member in $groupMembers) {
        Write-Host "姓名: $($member.name),年龄: $($member.age)"
    }
} else {
    Write-Host "未找到组 $GroupName 的信息"
}

脚本说明

  • 参数控制:通过param定义必填参数,并用ValidateSet限制输入只能是GROUP1或GROUP2,避免无效值。
  • JSON解析:Get-Content -Raw读取完整JSON内容,ConvertFrom-Json将其转为PowerShell可直接访问的对象。
  • 路径定位:$jsonContent.teams.$GroupName直接定位到目标组的成员数组,若你的JSON中组的父节点不是teams,替换为实际节点名即可。
  • 输出逻辑:判断目标组存在后,循环遍历成员数组,提取姓名和年龄属性输出。

运行方式

切换到脚本与JSON文件所在目录,在PowerShell中执行:

.\Get-GroupMembers.ps1 GROUP1

或:

.\Get-GroupMembers.ps1 GROUP2

常见问题排查

  • JSON路径错误:若你的JSON组直接在根节点下,将$jsonContent.teams.$GroupName改为$jsonContent.$GroupName。
  • 文件路径问题:Get-Content可使用绝对路径,避免因工作目录不同导致文件找不到。
  • 参数缺失:脚本设置了必填参数,未传入时会自动提示输入组名。

内容的提问来源于stack exchange,提问作者Manojkumar Musunuru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 22:12:22