Kaja
Kaja

Reputation: 3057

Passing a variable from ARM Template to PowerShell

is there any way to pass a variable from ARM- Template to Powershell?

My Power Shell looks like:

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 ` 

the structure of my ARM-Template looks like this:

{
  "$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": {}
}

Upvotes: 2

Views: 1160

Answers (1)

Tony Ju
Tony Ju

Reputation: 15629

You can get the variable from the outputs in the arm template. Here is an example for your reference.

outputs

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

Powershell script

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 ` 

Upvotes: 3

Related Questions