You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell将变量传递给ARM模板的vmName参数

解决PowerShell变量传递到ARM模板vmName参数的问题

你的问题出在两个核心点:

  1. 脚本里的-Name '$test'是指定部署任务的名称,和ARM模板中的vmName参数完全无关,根本没作用到虚拟机名称的设置上。
  2. 单引号包裹的$test不会被PowerShell解析,就算是用来设置部署名称也不会生效。

另外,修改ARM模板的defaultValue没用——ARM模板无法直接读取PowerShell环境里的变量,必须通过部署命令主动传递参数才会覆盖默认值。

正确写法1:直接指定模板参数

在New-AzResourceGroupDeployment命令里直接添加-vmName参数并传入变量:

$test = "vmNAMEtest"

New-AzResourceGroupDeployment `
    -ResourceGroupName 'test' `
    -DeploymentName $test ` # 如果需要自定义部署名称,直接用变量即可
    -TemplateUri '.\Documents\azuredeploy.json' `
    -vmName $test

正确写法2:用参数对象传递(适合多参数场景)

如果需要传递多个模板参数,建议用哈希表封装后通过-TemplateParameterObject传递:

$test = "vmNAMEtest"
# 封装所有需要传递的模板参数
$templateParams = @{
    vmName = $test
    # 可按需添加其他参数,比如 adminUsername = "adminuser"
}

New-AzResourceGroupDeployment `
    -ResourceGroupName 'test' `
    -DeploymentName $test `
    -TemplateUri '.\Documents\azuredeploy.json' `
    -TemplateParameterObject $templateParams

执行以上任意一种写法,ARM模板就会使用$test的值作为vmName,不再启用默认值。

内容的提问来源于stack exchange,提问作者EmployeeBoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:37:50