Azure Powershell位置参数错误

时间:2020-09-16 10:54:42

标签: azure powershell azure-powershell

我正在尝试使用Powershell进行部署。参数和模板文件都存储在Blob存储中,但是在尝试下载Blob之前,我会收到以下错误消息。

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

我使用的代码如下

$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 

我正在尝试在一个订阅中将多个资源部署到各个资源组。

预先感谢:)

1 个答案:

答案 0 :(得分:1)

这里是我的评论作为答案

在您的代码中,您已经在某些参数名称和用于该参数的实际值之间添加了=字符。
在PowerShell中,您可以为参数分配一个值,并在两者之间使用空格。

此外,有一些用于该cmdlet的参数(根据the docs)不存在,例如vpnResourceGroupNamefwResourceGroupNamebtnResourceGroupName。对我来说,它们听起来像变量被错误地添加为参数,而前导$被剥夺了?

对于可能使用大量参数的cmdlet,我建议使用Splatting,以保持代码的清洁和易于维护。

类似的东西:

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

New-AzResourceGroupDeployment @splatParams