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

使用Azure CLI与PowerShell变量时,如何正确解析JSON数组结果?

问题分析与解决方案

问题现象

在PowerShell 5.1(版本5.1.22621.1778)中执行Azure CLI(版本2.53.0)命令,比如az group list -o json,明明CLI返回的是单个资源组的JSON数组,但赋值给变量$result后,$result.Count显示为13,类型是System.Array——实际上这是CLI输出的JSON被按行拆分后的字符串数组,而非解析好的PowerShell对象数组。

根本原因

PowerShell 5.1对外部程序(比如az CLI)的输出默认会按换行符拆分,返回字符串数组。而Azure CLI输出JSON时默认是多行格式化的(每一个JSON层级换一行),所以每一行都被拆成了数组的一个元素,导致无法直接作为JSON对象使用。

最优解决方法

直接把CLI的多行输出合并成完整的JSON字符串,再解析成PowerShell对象即可,有两种简洁写法:

方法1:用Out-String合并输出后解析

$groupList = az group list -o json | Out-String | ConvertFrom-Json

Out-String会把管道里的所有字符串行合并成一个完整的字符串,再通过ConvertFrom-Json直接解析成PowerShell对象数组。之后就能正常用$groupList.Count获取资源组数量,也能直接访问对象属性(比如$groupList[0].name)。

方法2:用-join合并换行符后解析

$groupList = (az group list -o json) -join "`n" | ConvertFrom-Json

把CLI返回的字符串数组用换行符拼接成完整的JSON字符串,再解析成对象,效果和方法1一致。

纠正你的临时方案

你之前的临时写法$groupList = ConvertTo-Json ($result)是错误的——ConvertTo-Json是把对象转成JSON字符串,而你需要的是把JSON字符串转成对象,应该用ConvertFrom-Json。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 20:58:17