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

使用PowerShell批量导出嵌套JSON字段至CSV的问题

解决批量提取JSON字段并导出CSV的问题

原脚本的问题

  • 错误用Select-String处理JSON:JSON是结构化数据,文本匹配不仅容易误匹配(比如字段名出现在其他值或注释里),还无法准确提取字段对应的值
  • ForEach-Object内代码块无效:{(Select-String ...)}只是定义了脚本块但没执行,也没关联当前遍历的文件
  • 未构建结构化对象:直接输出零散的匹配结果,Export-Csv无法识别为有效列,最终导出空值

正确的PowerShell脚本

Get-ChildItem -Path "C:\Users\user\appdev\powershell-scripts\spConnections" -Filter *.json |
ForEach-Object {
    # 读取并解析当前JSON文件
    $jsonContent = Get-Content $_.FullName -Raw | ConvertFrom-Json
    # 提取目标数组中的第一个元素(匹配你的JSON结构)
    $spConnection = $jsonContent.'sfg_ping::qa::standard_sp_connections'[0]
    
    # 构建包含所需字段的自定义对象
    [PSCustomObject]@{
        filename     = $_.Name
        name         = $spConnection.name
        entity_id    = $spConnection.entity_id
        contact_info = $spConnection.contact_info
        sp_endpoint  = $spConnection.sp_endpoint
    }
} | Export-Csv "C:\Users\user\appdev\powershell-scripts\export.csv" -NoTypeInformation

关键说明

  • 过滤JSON文件:添加-Filter *.json确保只处理JSON格式文件,排除无关文件干扰
  • 解析JSON:ConvertFrom-Json把JSON文本转为PowerShell对象,直接通过属性访问(如$spConnection.name)提取值,比文本匹配可靠得多
  • 处理数组结构:你的JSON中目标字段嵌套在sfg_ping::qa::standard_sp_connections数组内,示例里只有一个元素,所以用[0]取第一个;如果数组有多个元素,可嵌套foreach遍历每个元素生成多行
  • 优化CSV导出:-NoTypeInformation避免CSV开头添加PowerShell类型信息,让输出更简洁

内容的提问来源于stack exchange,提问作者Ben S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:45:30