我正在寻找通过参数名称访问ARM模板对象属性的方法。
在下面的示例中,
parameters: {
"propertyName": {
"type": "string"
}
}
variables: {
"object": {
"value": {
"color": "red"
}
}
}
其中[parameters(“ propertyName”)]是颜色
以下内容在ARM模板部署中是否可行?还是有办法实现类似的目标?
"[variables('object')].[parameters('propertyName')]"
我希望以上行的输出为“红色”。
感谢您的帮助! :)
答案 0 :(得分:1)
在这里,您可以使用parameters
值在变量中选择对象的属性。
"value": "[variables('objects')[parameters('propertyName')].color]"
完整的示例:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"propertyName": {
"type": "string"
}
},
"variables": {
"objects": {
"property0": {
"color": "red"
},
"property1": {
"color": "green"
},
"property2": {
"color": "blue"
}
}
},
"resources": [],
"outputs": {
"messageOutObject": {
"type": "object",
"value": "[variables('objects')]"
},
"messageOutObjectProperty": {
"type": "string",
"value": "[variables('objects')[parameters('propertyName')].color]"
}
}
}
然后,您可以通过传递不同的参数值来选择不同的属性。例如:
New-AzResourceGroupDeployment -ResourceGroupName 'DeleteMe20190605' -TemplateFile .\azuredeploy.json -TemplateParameterObject @{propertyName = 'property1'}
OR
New-AzResourceGroupDeployment -ResourceGroupName 'DeleteMe20190605' -TemplateFile .\azuredeploy.json -TemplateParameterObject @{propertyName = 'property2'}