Azure Powershell 位置参数错误

Azure Powershell Positional Parameter error

我正在尝试使用 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 

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

提前致谢:)

这里是我的评论作为回答

在您的代码中,您在一些参数名称和用于该参数的实际值之间添加了一个 = 字符。
在 PowerShell 中,您可以为参数赋值,两者之间有一个 space 字符。

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

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

类似于:

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

New-AzResourceGroupDeployment @splatParams