Norrin Rad
Norrin Rad

Reputation: 991

Azure Powershell Positional Parameter error

I'm trying to do a deployment using powershell. Both parameter and template file are stored in blob storage, but I get the error below before it even tries to download the blobs.

New-AzResourceGroupDeployment : A positional parameter cannot be found that accepts argument 'newdeployment-878059'. At C:\Temp\New-Deployment\deploy-core.ps1:86 char:1

The code I use is below

$vnetRG = "rg-vnet"
$vpnRG = "rg-vpn"
$fwRG = "rg-fw"
$btnRG = "rg-bastion"
$loc = "west europe"

New-AzResourceGroupDeployment -Name = "newdeployment-$random"-ResourceGroupName "rg-vnet" `
  -TemplateParameterFile "$PSScriptRoot\core.parameters.json" -TemplateUri = $templateFileUri `
  -vpnResourceGroupName $rgRG -vpnResourceGroupName $vpnRG -fwResourceGroupName $fwRG  -btnResourceGroupName $btnRG 

I'm trying to deploy multiple resources to various resource groups in one subscription.

Thanks in advance :)

Upvotes: 0

Views: 609

Answers (1)

Theo
Theo

Reputation: 61093

Here my comment as answer

In your code, you have added an = character between some of the parameter names and the actual value to use for that parameter.
In PowerShell you assign a value to a parameter with a space character between the two.

Also, there are parameters used that (according to the docs) don't exist for that cmdlet, like vpnResourceGroupName, fwResourceGroupName and btnResourceGroupName. To me, they sound like variables mistakenly added as parameter with the leading $ stripped off?

For cmdlets that can potentially use a large number of parameters, I'd recommend using Splatting, to keep the code clean and easy to maintain.

Something like:

$splatParams = @{
    Name                  = "newdeployment-$random"
    ResourceGroupName     = "rg-vnet"
    TemplateParameterFile = "$PSScriptRoot\core.parameters.json"
    TemplateUri           = $templateFileUri
}

New-AzResourceGroupDeployment @splatParams

Upvotes: 1

Related Questions