【问题标题】:Passing a variable from ARM Template to PowerShell将变量从 ARM 模板传递到 PowerShell
【发布时间】:2019-09-12 10:01:24
【问题描述】:

有没有办法将变量从 ARM-Template 传递到 Powershell?

我的 Power Shell 看起来像:

Param(
 [string] $TemplateFile = 'azuredeploy.json',
 [string] $TemplateParametersFile = 'azuredeploy.parameters.json',
 [string] $ResourceGroupName = 'MyFirstTest-Example'
)
    New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
                                       -ResourceGroupName $ResourceGroupName `
                                       -TemplateFile $TemplateFile `
                                       -TemplateParameterFile $TemplateParametersFile `
                                       @OptionalParameters `
                                       -Force -Verbose `
                                       -ErrorVariable ErrorMessages

Suspend-AzureRmAnalysisServicesServer -Name "I Wouldlike to use a variable from ARM Template in this position" -ResourceGroupName $ResourceGroupName ` 

我的 ARM 模板的结构如下所示:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    //My Code here
  },
  "variables": {
    "AzureMachine": "['TestMachine']"
  },
  "resources": [
    //My Code here
  ],
  "outputs": {}
}

【问题讨论】:

    标签: json azure powershell arm-template


    【解决方案1】:

    您可以从 arm 模板的输出中获取变量。这是一个example 供您参考。

    输出

    "outputs" : {
        "vMname" : {
            "type" : "string",
            "value" : "[variables('AzureMachine')]"
        }
    }
    

    Powershell 脚本

    Param(
     [string] $TemplateFile = 'azuredeploy.json',
     [string] $TemplateParametersFile = 'azuredeploy.parameters.json',
     [string] $ResourceGroupName = 'MyFirstTest-Example'
    )
       $deployment=New-AzureRmResourceGroupDeployment -Name ((Get-ChildItem $TemplateFile).BaseName + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
                                           -ResourceGroupName $ResourceGroupName `
                                           -TemplateFile $TemplateFile `
                                           -TemplateParameterFile $TemplateParametersFile `
                                           @OptionalParameters `
                                           -Force -Verbose `
                                           -ErrorVariable ErrorMessages
    
    Suspend-AzureRmAnalysisServicesServer -Name $deployment.Outputs.item("vMname").value -ResourceGroupName $ResourceGroupName ` 
    

    【讨论】:

    • 感谢您的帖子,但由于Item,我得到了一个例外:调用Item 引起的异常
    • @Kaja 这应该可以。您可以检查项目中的名称是否存在? $deployment.Outputs.item("vMname").value
    • @Kaja 输出名称需要以小写字母开头。
    猜你喜欢
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2015-12-29
    相关资源
    最近更新 更多