我正在尝试使用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
我正在尝试在一个订阅中将多个资源部署到各个资源组。
预先感谢:)
答案 0 :(得分:1)
这里是我的评论作为答案
在您的代码中,您已经在某些参数名称和用于该参数的实际值之间添加了=
字符。
在PowerShell中,您可以为参数分配一个值,并在两者之间使用空格。
此外,有一些用于该cmdlet的参数(根据the docs)不存在,例如vpnResourceGroupName
,fwResourceGroupName
和btnResourceGroupName
。对我来说,它们听起来像变量被错误地添加为参数,而前导$
被剥夺了?
对于可能使用大量参数的cmdlet,我建议使用Splatting,以保持代码的清洁和易于维护。
类似的东西:
$splatParams = @{
Name = "newdeployment-$random"
ResourceGroupName = "rg-vnet"
TemplateParameterFile = "$PSScriptRoot\core.parameters.json"
TemplateUri = $templateFileUri
}
New-AzResourceGroupDeployment @splatParams