能否在AVD会话主机预配时安装AMD/NVIDIA GPU扩展?
在AVD预配阶段部署GPU扩展的可行方案
AVD向导自定义配置脚本选项的限制
AVD向导底部的自定义配置脚本URL仅支持执行PowerShell(.ps1)或Bash(.sh)脚本,直接传入ARM模板JSON文件无效——这个选项的作用是在VM部署完成后运行自定义脚本扩展,而非直接部署ARM资源。
可行解决方案
方案1:用自定义脚本调用Azure CLI部署GPU扩展
编写PowerShell脚本,通过Azure CLI命令部署GPU扩展,将脚本上传至Azure存储Blob(确保VM有权限访问),再把脚本URL填入AVD向导的自定义配置脚本选项。
示例PowerShell脚本逻辑:
# 通过托管身份登录Azure Connect-AzAccount -Identity # 部署NVIDIA Windows GPU扩展 Set-AzVMExtension -ResourceGroupName "你的资源组名" ` -VMName "$env:COMPUTERNAME" ` -Name "NVIDIAGridExtension" ` -Publisher "NVIDIA" ` -ExtensionType "NVIDIAGRIDWindows" ` -TypeHandlerVersion "1.0" ` -Settings @{} # AMD Windows GPU扩展示例(替换对应参数) # Set-AzVMExtension -ResourceGroupName "你的资源组名" ` # -VMName "$env:COMPUTERNAME" ` # -Name "AMDGPUExtension" ` # -Publisher "AMD" ` # -ExtensionType "AMDRadeonProSoftwareForWindows" ` # -TypeHandlerVersion "1.0" ` # -Settings @{}
脚本中用
$env:COMPUTERNAME自动获取当前VM名称,资源组名可提前指定或通过环境变量传递,确保能在目标VM上执行。
方案2:编写完整ARM模板部署AVD主机池+GPU扩展
跳过AVD向导的限制,直接编写包含主机池、虚拟机、GPU扩展的完整ARM模板,通过Azure门户、CLI或PowerShell部署。
模板核心片段示例:
{ "resources": [ // 此处省略主机池、虚拟机等基础资源定义 { "type": "Microsoft.Compute/virtualMachines/extensions", "name": "[concat(variables('vmName'), '/NVIDIAGRIDWindows')]", "apiVersion": "2023-07-01", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]" ], "properties": { "publisher": "NVIDIA", "type": "NVIDIAGRIDWindows", "typeHandlerVersion": "1.0", "autoUpgradeMinorVersion": true, "settings": {} } } ] }
方案3:用Azure Image Builder制作含GPU驱动的自定义镜像
如果不想每次部署都重复安装扩展,可使用Azure Image Builder创建预装AMD/NVIDIA GPU驱动的自定义镜像,后续直接通过AVD向导使用该镜像部署主机池,省却实时安装步骤。
关键注意事项
- 确保VM选用支持GPU的SKU(如NV、NC系列),否则扩展无法正常运行。
- VM需配置足够权限(如系统分配托管身份需具备部署虚拟机扩展的权限)。
- AMD和NVIDIA的扩展发布者、类型需对应正确,可在Azure市场查询最新参数。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

