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

PowerShell批量解析含可变节点的JSON文件获取referenceName值

解决PowerShell提取动态路径JSON节点的问题

你遇到的核心问题是PowerShell原生属性访问不支持通配符匹配动态属性名,得通过遍历对象属性的方式提取referenceName。下面是通用处理脚本,不管referenceName在actions还是triggers下的任意子节点里,都能自动提取:

# 先定位到固定的definition节点(两个JSON里这个路径一致)
$definition = $Workflow_Info.properties.files."Test_email/workflow.json".definition

# 准备数组存储所有找到的referenceName
$referenceNames = @()

# 遍历actions下的所有动态节点
if ($definition.actions) {
    foreach ($actionItem in $definition.actions.PSObject.Properties.Value) {
        # 检查当前节点是否包含目标路径,存在则加入结果数组
        if ($actionItem.inputs.host.connection.referenceName) {
            $referenceNames += $actionItem.inputs.host.connection.referenceName
        }
    }
}

# 遍历triggers下的所有动态节点
if ($definition.triggers) {
    foreach ($triggerItem in $definition.triggers.PSObject.Properties.Value) {
        if ($triggerItem.inputs.host.connection.referenceName) {
            $referenceNames += $triggerItem.inputs.host.connection.referenceName
        }
    }
}

# 输出所有提取到的值
$referenceNames

关键说明:

  • PowerShell将JSON解析为PSObject后,动态节点名(比如Send_an_email_from_a_shared_mailbox_(V2))会成为对象属性,无法用*直接匹配,必须通过PSObject.Properties.Value遍历所有属性值。
  • 脚本会先检查actions和triggers是否存在(避免不存在时抛出错误),再逐个遍历子节点,只要找到符合inputs.host.connection.referenceName路径的值就收集起来。
  • 批量处理数百个JSON文件时,只需把读取JSON的逻辑(比如Get-Content 目标文件路径 | ConvertFrom-Json)套入循环即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:23:08