Azure CLI执行含starts_with的JMESPath查询报错问题咨询
故障原因
该报错和JMESPath语法正确性无关,是Windows命令提示符(CMD)的参数解析规则导致的。
从报错信息可以看到,实际传递给Azure CLI的--query参数值丢失了外层的双引号,变成了裸的[?starts_with(name,'az400m10l01-RG')].name。CMD会把未被引号包裹的[]、?、括号识别为命令语法符号,直接提前解析截断参数,最终抛出].name was unexpected at this time的错误。
你用的JMESPath表达式本身完全符合语法规范:作用是筛选所有名称以az400m10l01-RG为前缀的资源组,返回匹配项的name字段,不存在语法问题。
修复方法
根据你使用的命令行环境选对应方案即可:
- 如果你使用PowerShell或者WSL/类Unix终端:原命令可以直接运行,不需要修改,只要确保输入时所有引号都是英文半角格式即可。
- 如果你使用原生Windows CMD:需要调整JMESPath内的引号转义,替换为如下命令即可正常执行:
az group list --query "[?starts_with(name,\"az400m10l01-RG\")].name" --output tsv
避坑提示
Azure官方文档里的CLI命令示例默认优先适配PowerShell和Bash环境,在原生CMD下运行带--query参数的命令时,经常会遇到这类引号解析问题,最省事的方式是直接切换到PowerShell执行实验室的所有CLI命令,不需要额外调整转义规则。
内容的提问来源于stack exchange,提问作者eliassal
相关产品推荐
相关产品推荐

