如何在Powershell中获得天蓝色的手臂模板的解释值(例如concat)

时间:2019-06-05 08:44:31

标签: json azure powershell templates

我们正在使用ARM模板在Azure租户中部署资源。 在模板中,我们做了一些像这样的变量表达式

  "rscPrefix": "[concat(parameters('regionCode'),parameters('entity'))]"

将模板发送到Test-AzureRmResourceGroupDeployment或New-AzureRmResourceGroupDeployment时,这些json表达式的替换效果很好。

我的问题是在powershell中检索解释的值,以启动无法在arm中完成的其他azure命令。

2 个答案:

答案 0 :(得分:0)

根据启动模板的方式,您可以解析参数文件,也可以仅使用powershell中的相同输入来计算这些参数,另一种选择是使用模板输出来输出这些值并使用powershell读取它们:

Get-AzResourceGroupDeployment -ResourceGroupName xxx -Name zzz

,您将在输出属性下拥有所有输出。

答案 1 :(得分:0)

这就是我所做的。 我工作的公司有对象命名约定。 用于获得这些名称的公式位于arm模板中,我不想在powershell中实现另一段代码来重做这些公式。

所以我创建了一个带有空资源的手臂模板文件。

{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": { 
    "regionCode": {
        "type": "string",
        "defaultValue": "we"
    },
    "entity": {
        "type": "string",
        "defaultValue": "cdo"
    },
    "environment": {
        "type": "string",
        "defaultValue": "stag",
        "allowedValues": [
            "dev",
            "test",
            "stag",
            "prod"
        ]
    },
     "plateform": {
        "type": "string",
        "defaultValue": "hub"
    }

},
"variables": {
    "rscPrefix": "[concat(parameters('regionCode'),parameters('entity'))]",
    "cosmosDB": "[concat(variables('rscPrefix'),'cdb',parameters('environment'),parameters('plateform'))]"
    },

"resources": [],
"outputs": {
    "cosmosDB": {
        "type": "string",
        "value": "[variables('cosmosDB')]"
    }
}

}

获取输出:

  $paramsOutputJson= az group deployment create --name "AzConfiguration" --resource-group "YourGroupName" --template-file "$templateFilePath" --parameters "$parametersFilePath"

我可以轻松地在devops中操纵此配置,并使多个手臂模板上的某些部分保持相同,并通过powershell命令使用相同的配置。