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

Azure CLI生成Azure RM参数文件时--query参数报错的解决方法咨询

Azure CLI生成Azure RM参数文件时--query参数报错的解决方法咨询

看起来你在尝试用Azure CLI导出NSG对应的ARM参数文件时,卡在了JMESPath查询语法的问题上,我来帮你一步步解决这个问题。

首先,你遇到的invalid jmespath_type value错误,根源是你写的--query参数不符合JMESPath的语法规范,再加上shell环境下的引号处理问题,导致CLI无法正确解析你的查询语句。我先给你直接的解决命令,再慢慢拆解原因。

直接可用的命令(分环境)

如果你用的是Bash/Zsh等类Unix shell:

az group export --resource-group RGname --resource-ids $nsg_id --query '{"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": parameters | map_values({"value": null})}'

如果你用的是PowerShell:

az group export --resource-group RGname --resource-ids $nsg_id --query "{`"$schema`": `"https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#`", `"contentVersion`": `"1.0.0.0`", `"parameters`": parameters | map_values({`"value`": null})}"

执行上面的命令后,应该就能生成你想要的参数文件格式了。

为什么这个命令能行?

我拆解一下关键部分:

  1. 固定参数文件的元数据:直接在JMESPath里指定了参数文件要求的$schema和contentVersion固定值,这两个值是ARM参数文件的标准配置,不需要从导出的模板里提取。
  2. 转换参数结构:用JMESPath的map_values函数,把导出的ARM模板里每个参数的原有结构(比如包含type、defaultValue的对象)直接转换成你需要的{"value": null}格式,完美匹配目标结构。
  3. 引号处理:在类Unix shell里用单引号包裹整个--query参数,避免shell解析里面的双引号;在PowerShell里则用反引号转义双引号,确保CLI能正确识别JMESPath语句。

你原来的命令哪里错了?

你之前写的{$schema: $schema, contentVersion: contentVersion, parameters: parameters}有两个核心问题:

  • JMESPath语法不规范:JMESPath要求构造对象时,键名必须用双引号包裹,你没加双引号导致解析失败。
  • 逻辑偏差:你试图引用导出模板里的$schema和contentVersion,但导出的ARM模板的$schema是模板自身的 schema,并不是参数文件需要的那个,完全没必要从模板里提取,直接指定固定值更准确。

备注:内容来源于stack exchange,提问作者Max_il

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:19:41