使用PowerShell部署ARM模板:获取AVD会话主机数量并传递增量值至模板
使用PowerShell部署ARM模板时动态传入AVD会话主机增量数值
我来帮你实现这个需求——部署ARM模板时自动抓取现有AVD会话主机的数量,把下一个增量数值传递给模板。咱们直接调整脚本并解释关键细节:
需求回顾
使用PowerShell部署ARM模板时,需从Azure门户获取已有的AVD会话主机数量,通过声明变量将下一个增量数值传入ARM模板中。
调整后的PowerShell脚本
# 若当前未登录Azure账号,取消注释下面这行执行登录 # Login-AzAccount # 获取指定主机池下的现有会话主机总数 $existingVmCount = (Get-AzWvdSessionHost -HostPoolName infosyswvd -ResourceGroupName avd).Count # 计算下一个增量数值(这里以现有数量+1为例,可根据你的命名规则调整) $nextVmNumber = $existingVmCount + 1 # 执行ARM模板部署,将增量数值作为参数传入 New-AzResourceGroupDeployment ` -ResourceGroupName AVD ` -TemplateFile 'D:\Updated-AVD\East US\Template.json' ` -TemplateParameterFile 'D:\Updated-AVD\East US\Parameters.json' ` -vmNumber $nextVmNumber # 注意:参数名要和ARM模板中定义的参数完全一致
关键细节说明
- 获取主机数量:通过
.Count属性直接提取Get-AzWvdSessionHost返回结果的总数,这就能拿到当前AVD主机池里的会话主机数量 - 增量逻辑自定义:
$nextVmNumber的计算可以灵活调整——比如你要是按序号命名虚拟机(如avd-vm-01、avd-vm-02),现有数量+1就刚好;如果是其他规则,修改这里的计算逻辑即可 - 参数匹配要求:最后部署命令里的
-vmNumber必须和你的ARM模板中定义的参数名称完全一致,模板才能正确接收这个值。比如你的模板里需要有这样的参数定义:"parameters": { "vmNumber": { "type": "int", "metadata": { "description": "下一个会话主机的增量编号" } } } - 参数优先级:如果你的参数文件(Parameters.json)里已经定义了
vmNumber的值,命令行传入的参数会覆盖参数文件中的值,这点需要注意
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

