ARM模板部署虚拟网络时New-AzResourceGroupDeployment因IP解析失败
问题解决:ARM模板部署虚拟网络时的InvalidJson错误
核心原因
模板中对数组类型参数的引用方式错误:将数组参数表达式包裹在双引号中,导致Azure将数组解析为字符串而非数组类型,触发JSON格式错误。
修复步骤
1. 修正ARM模板中的参数引用
找到虚拟网络资源定义的properties部分,修改以下两行:
错误写法:
"addressPrefixes": "[parameters('addressPrefixes')]" "subnets": "[parameters('subnets')]"
正确写法(移除表达式外的双引号):
"addressPrefixes": "[parameters('addressPrefixes')]" "subnets": "[parameters('subnets')]"
注:表达式
[parameters('xxx')]本身会返回数组类型,无需额外包裹引号,否则会被强制转换为字符串,导致JSON解析失败。
2. 验证参数文件格式
确认参数文件中addressPrefixes和subnets的格式正确,示例如下:
"addressPrefixes": { "value": [ "172.50.28.0/22" ] }, "subnets": { "value": [ { "name": "default_VM01", "properties": { "addressPrefix": "172.50.28.0/26" } } ] }
确保文件无语法错误(如缺失逗号、括号不匹配等)。
3. 升级Az模块版本
当前使用的Az模块版本(5.8.0)较老旧,存在潜在的参数解析bug。升级至最新版本:
Update-Module -Name Az -Force
4. 正确执行部署命令
确保使用参数文件而非直接在命令行传递数组参数,避免解析错误:
New-AzResourceGroupDeployment -ResourceGroupName "clientname-rg-vm-01" -TemplateFile "./template.json" -TemplateParameterFile "./parameters.json"
内容的提问来源于stack exchange,提问作者bakkie103
相关产品推荐
相关产品推荐

