Azure CLI创建自定义策略报错:PolicyRuleDefinition不存在'mode'成员
解决Azure CLI创建自定义策略时的JSON解析错误
错误提示Could not find member 'mode' on object of type 'PolicyRuleDefinition'的核心原因是命令行参数与规则JSON文件的配置冲突:你在CLI命令中指定了--mode "All",同时在policy-rules.json里也包含了"mode": "All"字段,Azure策略规则定义中,mode只能在一个地方配置(要么命令行,要么JSON文件),重复配置导致解析失败。
方案1:修改CLI命令,移除重复的--mode参数
保留JSON文件中的mode配置,执行以下命令:
az policy definition create --name "deny-public-ip" --display-name "Deny Public IP" --description "Deny creation of public IP addresses" --rules "policy-rules.json"
方案2:修改JSON文件,移除mode字段
删除policy-rules.json中的"mode": "All"行,修改后的JSON内容:
{ "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Network/publicIPAddresses" } ] }, "then": { "effect": "deny" } } }
然后执行原命令(保留--mode "All"):
az policy definition create --name "deny-public-ip" --display-name "Deny Public IP" --description "Deny creation of public IP addresses" --rules "policy-rules.json" --mode "All"
额外验证点
- 确认JSON文件无语法错误:在Cloud Shell中执行
jq . policy-rules.json命令,快速验证JSON格式合法性。 - 升级Azure CLI到最新版:执行
az upgrade,避免版本兼容问题。
内容的提问来源于stack exchange,提问作者Konstantin Krokhin
相关产品推荐
相关产品推荐

