如何用Select-Object提取JSON嵌套字段中的主机名与agent_version
解决方法:提取嵌套的JSON字段
这是因为Select-Object会把meta.agent_version直接当作一个字面量的属性名,而你的对象里并没有这个属性——meta是一个嵌套的子对象,agent_version是它的属性之一。你需要用计算属性来深入访问嵌套字段,修改后的脚本如下:
$jsonstring = (Get-Content 'servers.JSON') | ConvertFrom-Json $jsonstring.rows | Select-Object name, @{Name='agent_version'; Expression={$_.meta.agent_version}}
代码说明:
@{Name='agent_version'; Expression={$_.meta.agent_version}}是计算属性的标准写法:Name:定义输出结果里的列名(你可以根据需求改成自定义名称)Expression:通过脚本块指定值的提取逻辑,$_代表当前遍历到的rows对象,通过$_.meta.agent_version就能精准访问到嵌套的版本号字段
示例输出:
运行脚本后会得到结构化的结果:
name agent_version ---- ------------- TEL05 5.14.0
内容的提问来源于stack exchange,提问作者Parth Gandhi
相关产品推荐
相关产品推荐

