我接手的每一个 Azure Virtual Desktop 环境都有同样的两个问题:没人能告诉我会话主机来自哪个镜像版本,而上一轮补丁是靠逐台登录 30 台虚拟机完成的。这篇指南就是我用来取代这种做法的流程。它涵盖镜像里应该放什么、如何在 Azure Compute Gallery 中构建和版本化镜像、如何用会话主机更新或经典的“排空再替换”模式推送、构建出错时如何回滚、每一步真正需要多长时间,以及 Spot VM 和临时 OS 磁盘在成本图景中的位置。文中所有内容都对照了正文内联链接以及“来源”一节列出的 Microsoft Learn 页面。
镜像策略:库镜像还是自定义黄金镜像
你有两个起点。第一个是 Windows 11 Enterprise 多会话版的 Azure Marketplace 镜像,Microsoft 会在安全补丁发布后每月刷新,并且预装了 FSLogix。带 Microsoft 365 Apps 的变体大约在每月第三周的中段上线。如果你的业务应用可以通过 Intune 干净地安装,你完全可以只用 Marketplace 镜像,彻底跳过镜像流水线。
第二个是自定义镜像。Microsoft 的黄金镜像指南把它描述为一台从 Marketplace 创建、经过自定义、用 Sysprep 通用化再捕获的 VM。该指南建议生产环境使用 Azure Compute Gallery 而不是独立的托管镜像,因为前者支持复制和版本控制;它也直言不讳地列出了常见错误:不要在镜像里安装 Azure Virtual Desktop 代理,不要捕获已经加入主机池的 VM,运行 Sysprep 前先把 VM 退出域,不要对同一台 VM 捕获两次,也不要用现有的自定义镜像去创建新的基础 VM。每次都从 Marketplace 镜像重新开始。
哪些东西属于镜像,哪些属于 Intune 或 FSLogix
我的规则很简单:镜像里放那些安装缓慢、或者必须在第一个用户登录之前就存在的东西。其余一切都移到可以无需重建就能变更的层。
| 层 | 放在这里 | 原因 |
|---|---|---|
| 镜像(Compute Gallery 版本) | 操作系统版本、累积更新、Microsoft 365 Apps、带 WebRTC 重定向器的 Teams、FSLogix 代理、体积大或难伺候的业务应用安装程序、Visual C++ 运行库、Virtual Desktop Optimization Tool 的更改 | 安装缓慢、首次登录就需要、受益于经过测试的重建 |
| Intune 或组策略 | 设置目录策略、Defender 配置、证书、小型系统上下文应用、Windows Update 质量更新设置 | 会话主机更新不会保留手工添加的文件、注册表项或证书,因此配置必须来自管理工具或镜像 |
| FSLogix 配置文件容器 | 用户配置文件、Office 缓存、OneDrive | 配置文件在主机之间漫游,删除主机不会丢失任何东西 |
| 自定义配置脚本 | 必须在预配时运行的最后一步调整 | 由会话主机配置在每台新主机上运行 |
Intune 有两点与镜像相关。Intune 多会话版文档指出,Intune 不支持已注册设备的克隆镜像,所以永远不要注册构建 VM。多会话版的应用必须在系统上下文中以“必需”方式分配,这恰好是决定什么该进镜像的好标准:任何只能按用户安装的东西都应该进镜像,而不是放在 Intune 里。
在 Azure Compute Gallery 中构建并版本化镜像
Image Builder 与自定义镜像模板,还是手动 Sysprep
手动构建对几台主机还行;一旦同一个月里两位管理员构建出不同的镜像,它就失效了。Azure Virtual Desktop 门户中的自定义镜像模板是 Microsoft 的答案。它封装了 Azure VM Image Builder,可以用 Marketplace、库、托管镜像或现有模板作为源,运行内置脚本(安装并配置 FSLogix、Teams 优化、语言包、时区重定向、RDP Shortpath、屏幕捕获保护、禁用 Storage Sense、应用 Windows 更新)以及你放在公开 URL 上的自定义脚本,替你运行 Sysprep,并把结果分发到 Compute Gallery 或托管镜像。构建在一个名为 IT_<ResourceGroupName>_<TemplateName>_<GUID> 的暂存资源组中以用户分配的托管标识运行,出问题时要看的是 packerlogs 容器中的 customization.log。
如果你偏好代码,底层的 Image Builder 模板在 Bicep 或 JSON 中提供同样的自定义器。有两个默认值对规划很重要:buildTimeoutInMinutes 默认 240 分钟,最大 960 分钟,Microsoft 建议 Windows 不要低于 60 分钟。如果仍有重启或安装程序挂起,WindowsUpdate 自定义器可能以 0x80240016 失败,所以在它之前放一个 WindowsRestart 步骤。Microsoft 的 AVD Image Builder 演练还指出,Windows 的构建 VM 应为 Standard_D2_v2 或更大。
版本命名约定与复制区域
Azure Compute Gallery 有三个层级:库、镜像定义(发布者、产品/Offer、SKU、OS 状态、Hyper-V 代次和安全类型)和镜像版本。镜像版本名称必须是 MajorVersion.MinorVersion.Patch,latest 解析为最高的主版本、次版本、补丁号。我采用一种把 Windows 版本和补丁月份编码进去的约定,例如当前镜像定义上 2026 年 11 月累积更新对应 2026.11.0,同月的热修复重建则是 2026.11.1。让发布者、Offer 和 SKU 的值与你起步的 Marketplace 镜像保持一致,这样在门户中操作系统版本一目了然,这是一项文档化的最佳实践。
关于复制,Compute Gallery 概述给出了具体指导:生产镜像至少保留三个副本,每并发创建 20 台 VM 增加一个副本,在支持的区域使用 ZRS 存储版本,生产和测试使用不同的库,并在不同区域保留两个库以用于灾难恢复。AVD 文档补充说,会话主机更新希望目标镜像至少有两个副本,并且不支持使用与主机池位于不同订阅的库镜像。复制到其他区域“在某些情况下可能需要几个小时”,这对后面的时间表很重要。
有三个安全设置值得从第一天就开启。在版本通过验证之前设置 excludeFromLatest,这样不会有任何东西从它自动部署。把 safetyProfile.allowDeletionOfReplicatedLocations 设为 false,这样没人能删掉正在运行的主机所依赖的区域。给库加上资源锁。如果你使用 Trusted Launch,请注意用 API 版本 2025-03-03 或更新版本创建的镜像定义默认是 Hyper-V 第 2 代和 TrustedLaunchSupported,而预览版的 Trusted Launch 验证在版本被标记为有效之前至少要多花一小时。
AVD 镜像更新与主机池补丁策略
策略问题归结为创建主机池时做出的一个决定:标准管理还是会话主机配置。Microsoft 的主机池管理方式页面明确指出,这一方式之后无法更改,而且会话主机配置仅适用于池化主机池。我在 2026 年 6 月的 Azure Virtual Desktop 更新汇总中介绍过这些自动化主机池的发布;本节讲的是运维细节。
面向自动化主机池的会话主机更新
带会话主机配置的主机池有两个子资源。会话主机配置定义主机应该是什么:镜像、VM 大小、OS 磁盘类型、安全类型、域加入、网络、可用性区域、来自 Key Vault 的管理员凭据、标签以及可选的自定义配置脚本。会话主机管理策略定义如何创建和更新主机:时区、批次大小(门户默认值为 1)、注销延迟(默认 2 分钟,可配置 0 到 60 分钟)、注销消息,以及是否删除原始 VM。
当你修改配置并安排更新时,会话主机更新会执行以下步骤(Microsoft 的原文加上我的转述):
- 按名称选出第一批主机,向已连接的用户发送通知消息,并在注销剩余用户之前等待配置的延迟时间。
- 把这些主机置于排空模式,并从主机池中移除。Active Directory 计算机对象不会被删除。
- 从更新后的配置创建相同数量的新 VM,命名为
SessionHostName-DateTime,但保留原始的操作系统主机名,因此加入域的主机会继承其现有的计算机对象和组策略范围。 - 把新主机加入池并关闭排空模式。
- 删除原始 VM。
在批次开始之前,会先单独更新一台称为初始主机的主机,以验证端到端流程。如果初始主机失败,更新就会停止。Microsoft 自己的例子是一个 10 台主机、批次大小为 3 的池:一台初始主机,然后三批各三台,全程至少有七台主机可用。你最多可以提前两周安排更新,配置指南指出每台会话主机大约需要 20 分钟,同一批次并发执行。
PowerShell 路径使用预览版 Az.DesktopVirtualization 模块(5.3.0 或更新版本)。把配置指向特定的库版本,调整策略并安排时间:
Update-AzWvdSessionHostConfiguration -HostPoolName 'hp-fin-prod' -ResourceGroupName 'rg-avd-prod' `
-ImageInfoType 'Custom' `
-CustomInfoResourceID '/subscriptions/<sub>/resourceGroups/rg-avd-images/providers/Microsoft.Compute/galleries/acg_avd/images/win11-ms-m365/versions/2026.11.0'
Update-AzWvdSessionHostManagement -HostPoolName 'hp-fin-prod' -ResourceGroupName 'rg-avd-prod' `
-ScheduledDateTimeZone 'Mountain Standard Time' -UpdateMaxVmsRemoved 5 `
-UpdateLogOffDelayMinute 15 -UpdateLogOffMessage 'Maintenance: save your work and sign out.' `
-UpdateDeleteOriginalVM $true
Invoke-AzWvdInitiateSessionHostUpdate -HostPoolName 'hp-fin-prod' -ResourceGroupName 'rg-avd-prod' `
-ScheduledDateTime (Get-Date '2026-11-07 22:00')
Get-AzWvdSessionHostManagementsUpdateStatus -HostPoolName 'hp-fin-prod' -ResourceGroupName 'rg-avd-prod' |
Format-List PercentComplete, ProgressSessionHostsCompleted, ProgressSessionHostsRollbackFailed会话主机更新取代的是过去干这件事的一整堆脚本:设置排空模式的 Runbook、构建新 VM 的流水线、删除旧 VM 的清理作业,以及记录哪台主机用哪个镜像的电子表格。它取代不了的是配置管理。Microsoft 的指导是,任何手工加到主机上的东西在更新后都会消失,因此它们必须存在于镜像、Intune 或组策略,或者自定义配置脚本中。文档里还有两条运维规则:在更新期间禁用池上的自动缩放,否则更新可能因运行时错误失败;如果你从现有会话主机构建新镜像,捕获前要删除 C:\packages\plugin,否则 DSC 扩展无法把新 VM 加入池。
标准主机池的经典滚动更新
标准主机池没有以上任何功能,Microsoft 的对比表写得很清楚:你需要“使用自己现有的工具和流程,例如自动化流水线和自定义脚本”。模式与会话主机更新自动化的那套相同,只是由你来做:
- 用新镜像版本向同一个池部署新的会话主机,使用为该池生成的注册令牌。给它们取能区分新旧的名字。
- 把旧主机置于排空模式,让新连接落到新主机上,而现有会话留在原处。如果分配了自动缩放,先给旧主机打上缩放计划的排除标签,因为自动缩放会覆盖排空模式。
- 通知用户,等待会话清空,或在维护窗口把他们注销。
- 从池中移除旧主机,删除 VM、磁盘和网卡。
Update-AzWvdSessionHost -ResourceGroupName 'rg-avd-prod' -HostPoolName 'hp-eng-std' `
-Name 'avd-eng-07.corp.contoso.com' -AllowNewSession:$false排空模式需要 Desktop Virtualization Session Host Operator 角色,切换后门户可能有大约 60 秒显示的是旧状态。Nerdio Manager 之类的第三方工具会为标准池自动化同样的流程;如果你已经拥有它,就用它。如果你在建新池,请用会话主机配置创建,让平台来做这件事。
镜像内重建与就地打补丁
会话主机更新页面指出,从更新后的镜像替换主机“符合在核心源镜像中管理更新的建议,而不是按持续重复的计划把更新分发并安装到每台会话主机上”。Microsoft 的安全建议补充说应每月为基础镜像打补丁。这就是策略:每月的累积更新随新镜像版本发布,主机从该版本替换。
就地打补丁仍然有用武之地,那就是等不到下次构建的紧急安全修复。Windows 11 Enterprise 多会话版的文档化选项比人们预期的要窄:
| 方法 | 针对 Windows Enterprise 多会话版的文档立场 | 用途 |
|---|---|---|
| Intune 设置目录,Windows Update for Business 类别 | 支持质量更新:活动时间、延迟、截止期限与宽限期、暂停。不支持更新环。 | 在两次重建之间让 Entra 加入或混合加入的主机保持最新 |
| Microsoft Configuration Manager | 有文档:基于 OS SKU 175 的查询驱动一条使用 Windows 客户端更新的自动部署规则 | 已经运行 Configuration Manager 的混合加入环境 |
| WSUS | 多会话版 FAQ 确认可通过 WSUS 获得质量更新和功能更新 | 隔离网络 |
| Azure Update Manager | 支持的镜像和自定义镜像列表仅限 Windows Server;未列出任何 Windows 客户端或多会话版 SKU | 基于 Windows Server 的会话主机 |
| 自动 VM 来宾修补 | 不支持自定义镜像;支持列表仅为 Windows Server | 不适用于多会话版 |
| 功能更新(例如 24H2 到 25H2) | 池化主机池不支持就地升级 | 永远是新镜像 |
功能更新那一行为池化主机池的争论画上了句号:Windows 版本变更就是镜像变更,没有别的办法。Intune 还把多会话版视为独立的操作系统版本,所以构建质量更新策略时,请在设置目录中按 OS edition == Enterprise multi-session 过滤,否则你会花一个下午纳闷为什么什么都没生效。
推荐节奏
| 节奏 | 操作 | 机制 |
|---|---|---|
| 第二个星期二,同一周 | 从最新的 Marketplace 发布或你自己的基础镜像构建镜像版本 YYYY.MM.0,包含当月累积更新、应用更新和 FSLogix | 自定义镜像模板或 Image Builder 流水线,分发到库并设置 excludeFromLatest |
| 三个工作日内 | 在配置相同的测试主机池上验证,然后清除 excludeFromLatest | 验证池上的会话主机更新 |
| 随后的周末维护窗口 | 把生产主机池分批滚动到新版本 | 会话主机更新,或标准池的排空再替换 |
| 带外 | 如果下次构建还要几天以上,就给运行中的主机应用关键安全修复 | 设置目录质量更新截止期限、Configuration Manager 或 WSUS |
| 每年两次 | 基于新的 Marketplace 镜像构建,迁移到下一个 Windows 功能更新 | 新的镜像定义或版本,全部主机替换 |
| 每季度 | 清理比最近两个已知良好版本更旧的镜像版本,审查副本数量和区域 | 库的日常维护 |
AVD 镜像版本控制与回滚策略
当上一个镜像版本还在时,回滚很便宜;当有人为了省几 GB 快照存储把它删了,回滚就很贵。至少保留最近两个已知良好的版本,在镜像定义的发布说明中标记当前版本,并对生产依赖的任何东西设置 BlockDeletionBeforeEndOfLife 或资源锁。
固定到上一个镜像版本
永远不要把生产主机池指向 latest。会话主机配置引用的是精确的版本资源 ID,动态自动缩放会按该配置创建新主机,所以固定版本能带来确定性的主机和一次可以轻松撤销的变更。回滚带会话主机配置的主机池与向前滚动是同一个操作:用上一个版本的资源 ID 运行 Update-AzWvdSessionHostConfiguration,再安排一次会话主机更新。Microsoft 自身对回滚的关注体现在状态对象的 ProgressSessionHostsRollbackFailed 字段上,请盯住这个计数器。
会话主机更新如何处理失败
文档给出了清晰的失败模型。如果初始主机失败,更新会在任何批次运行之前停止。如果某个批次失败,你可以在门户中或用 Invoke-AzWvdControlSessionHostUpdate -Action Retry 暂停、恢复、取消或重试;重试通常能清除大批次时偶发的 AgentRegistrationFailureGeneric 错误。暂停后两周内未恢复的更新会被自动取消。无法恢复的主机会被留在排空模式。重要的注意事项是,中途取消会留下一个混合的池,主机处于两个操作系统版本甚至两个域中,Microsoft 要求你尽快安排另一次更新以恢复一致性。实践中这意味着取消的更新之后应立即跟一次回滚到上一版本的更新,而不是让池半途而废。还要注意,失败的更新在被取消之前会阻止删除主机池,而且一旦安排,更新就不能编辑,只能取消后重新创建。
回滚标准主机池
没有会话主机更新时,回滚就是滚动模式的反向操作:用上一个库版本和新的注册令牌部署主机,排空有问题镜像上的主机,等会话清空,删除它们。由于 FSLogix 保存着配置文件,而计算机帐户只有在保留名称时才会被复用,请使用一种能容忍两代主机共存一天的命名方案。如果你还在标准池上用托管镜像而不是库来重建 VM,现在就是迁移到库的时候,因为托管镜像没有可供回退的版本历史。
更新 AVD 镜像需要多长时间?
诚实的答案分三部分,其中只有一部分有 Microsoft 的数字。下面的范围是我在实践中看到的;文档化的锚点已单独标出,其余都是典型范围,不是 Microsoft 的数字。
| 阶段 | 典型范围 | 影响因素 | 文档化锚点 |
|---|---|---|---|
| 镜像构建(Image Builder 或自定义镜像模板) | 1 到 3 小时 | 安装程序的数量和大小、Windows Update 步骤、重启、Teams 和 Office 安装 | 默认 buildTimeoutInMinutes 为 240,最大 960;Windows 构建不应低于 60 |
| 新版本的 Trusted Launch 验证(预览) | 1 小时或更长 | 版本创建后的平台验证 | 至少一小时 |
| Compute Gallery 复制 | 源区域几分钟;其他区域和副本数量需要 1 到数小时 | 占用的镜像大小、目标区域数量、副本数量 | “在某些情况下可能需要几个小时”;向每个区域的首次复制计收出口流量费 |
| 在测试池上验证 | 1 到 2 个工作日 | 你的应用负责人,而非平台 | 无 |
| 会话主机更新,每台主机 | 约 20 分钟 | 解除分配、创建、域加入、代理注册 | 每台会话主机约 20 分钟 |
| 会话主机更新,整个池 | 初始主机加各批次,每批约 20 分钟 | 主机数除以批次大小,再加注销延迟(0 到 60 分钟) | 每个池一次只能有一个更新;最多提前两周安排 |
一个推算示例(基于文档中的 20 分钟数字推导,而非 Microsoft 的原话):一个 40 台主机、批次大小为 5、注销延迟 15 分钟的池,会先跑一台初始主机,然后八个批次。九轮各约 20 分钟再加延迟,大约三个半小时,全程至少有 35 台主机可用。批次大小减半,窗口翻倍;批次大小翻倍,窗口减半,但会同时让 10 台主机停服,并增加代理注册错误的概率。请根据并发余量而不是急躁程度来选择批次大小。
端到端地说,“更新 AVD 镜像需要多长时间”的现实答案是:当天完成构建和复制,一到两天验证,再加一个两到四小时的维护窗口来处理中等规模的池。如果有人告诉你 30 分钟,他说的是一台主机。
使用 Spot 实例自动化 AVD 主机池:文档怎么说
每个月都有人搜索这个问题,所以这里是文档化的立场。Azure Spot VM 以折扣价出售闲置容量,没有 SLA;当 Azure 需要收回容量时,VM 会在提前 30 秒通知(通过 Scheduled Events 尽力交付)后被逐出。逐出策略是“解除分配”(默认,磁盘仍计费、配额仍占用)或“删除”。B 系列和促销大小被排除在外,Spot 有独立的配额池,而且 VM 创建后无法转换为 Spot 或从 Spot 转回。
在 Azure Virtual Desktop 这一边,无论支持与否都没有文档。主机池向导里没有 Spot 选项,会话主机配置架构有 vmSizeId、diskInfo、securityInfo 和 diffDiskSettings,但没有优先级、逐出策略或计费配置文件属性,AVD 的“新增功能”历史中也没有任何 Spot 条目。在 Microsoft Q&A 上,一位 Microsoft 员工在回答 2024 年 4 月的问题时说,Spot 对 AVD“有点冒险”,“VDI 不是 Azure Spot VM 的有效工作负载”,而且产品团队建议改用自动缩放来控制成本。一位志愿版主描述了唯一的变通方法:自己创建 Spot VM,加入目录,再用注册令牌把它注册到标准主机池。
这给你留下的空间是:
- 标准主机池上的开发、测试和培训实验室:可行,前提是你能接受会话在任务中途消失。使用 FSLogix 让配置文件得以保留,把逐出策略设为“删除”以免为滞留磁盘付费,并在门户的价格历史视图中选择历史逐出率低的大小。
- 非持久化的池化生产环境:这不是我会设计的方案。30 秒的通知比大多数组织配置的注销延迟还短,用户会丢失未保存的工作。
- 带会话主机配置的自动化主机池:目前不可能;架构中没有地方可以表达它。
为了成本而“自动化主机池”的受支持方式是自动缩放:标准池使用电源管理缩放,负责开关主机;会话主机配置池使用动态自动缩放,还会在最小和最大池大小之间创建和删除主机。如果你只想要“创建和删除”的行为,把 Minimum percentage of active hosts (%) 设为 100。动态自动缩放用当前会话主机配置中的镜像构建新主机,这又是一个固定版本的理由。
成本杠杆:临时 OS 磁盘、预留、排空即解除分配与镜像存储
临时 OS 磁盘。 AVD 的“新增功能”页面在 2025 年 10 月把临时 OS 磁盘支持列为公共预览,2026 年 6 月列为可用,会话主机配置架构也公开了 diffDiskSettings,取值为 option: Local 和 placement: CacheDisk 或 TempDisk。AVD 的先决条件页面和 FAQ 尚未跟上,仍把临时 OS 磁盘列为不支持,所以在投入之前请先在你的区域确认。临时 OS 磁盘文档给出了约束:镜像必须能放进 VM 大小的缓存盘、临时盘或 NVMe 盘,Trusted Launch 会占用其中 1 GiB,不支持停止并解除分配、快照、VM 捕获和 Azure Backup,重新映像时数据会丢失。最后这一点正是它只适用于带 FSLogix 的池化主机、并且只能配合删除并重建(而非解除分配)主机的动态自动缩放的原因。回报是更快的重新映像和更低的 OS 磁盘延迟;只有在选择 SSD 基础磁盘时才需要支付基础磁盘费用。
预留实例与节省计划。 AVD 成本指南把自动缩放、Azure 节省计划和预留 VM 实例列为三大计算成本杠杆。预留 VM 实例为期一年或三年,只覆盖计算部分(不含 Windows 软件计费项),是账单折扣而非容量保证,并且从 2026 年 7 月 1 日起不再为部分 VM 系列销售或续订,所以续订前请检查你的系列。计算节省计划是按小时的美元承诺,可在不同大小和区域之间浮动,适合在动态自动缩放下规模变化的池。用预留或节省计划覆盖始终在线的基线(活动主机最小百分比),把弹性部分留在按需付费上。
排空即解除分配。 自动缩放的缩减阶段会把主机置于排空模式,若启用强制注销则在等待时间后注销用户,然后解除分配。断开连接的会话在合并计算中算作活动会话,所以请配合 Set time limit for disconnected sessions 策略,否则池永远到不了零。会话主机更新也会尊重电源状态:你可以更新一个所有主机都已解除分配的池,这是在夜间关灯的池上滚动镜像最便宜的方式。
镜像存储。 Compute Gallery 本身免费;你为每个版本占用大小的快照存储付费,乘以副本数和区域数,再加上向每个区域首次复制的出口流量。Microsoft 的例子是一个 127 GB 的 OS 磁盘实际占用 10 GB,复制到三个区域、每个区域两个副本,按六个 10 GB 快照计费。把当前版本广泛复制,旧版本只留在一个区域,清理掉最近两个已知良好版本之外的版本,并让测试库保持独立,这样清理脚本就碰不到生产环境。
如果你的会话主机运行在 Azure Local 或已启用 Arc 的服务器上而不是 Azure VM 上,镜像构建流水线相同,但推送工具不同;我在混合 Arc 启用服务器预览版文章中介绍过。要跟踪影响这一流程的功能变更日志,请关注 Azure Virtual Desktop 新增功能系列。
该怎么做
- 现在就为每个主机池决定管理方式。新的池化池使用会话主机配置;必须留在自定义流水线上的保持标准管理。之后无法切换。
- 创建一个生产 Compute Gallery 和一个独立的测试库,每个库都有一个镜像定义,镜像 Marketplace 的发布者、Offer 和 SKU,使用 Hyper-V 第 2 代和
TrustedLaunchSupported。 - 搭建自定义镜像模板或 Image Builder 流水线,在补丁星期二后两天内产出
YYYY.MM.0,分发时设置excludeFromLatest,直到验证通过。 - 在生产区域至少设置三个副本,每并发创建 20 台主机增加一个副本,在可用的地方使用 ZRS,并把
allowDeletionOfReplicatedLocations设为false。 - 把你在主机上手工配置的一切移到按多会话版过滤的 Intune 设置目录策略中,或移到自定义配置脚本中。
- 对于会话主机配置池,一次性设置好管理策略:根据并发余量确定批次大小,10 到 15 分钟的注销延迟加一条通俗易懂的消息,并把
UpdateDeleteOriginalVM设为$true。 - 对于标准池,把四步排空再替换的流程写成脚本,包括自动缩放排除标签,并放进源代码管理。
- 为带外修复构建一条 Intune 质量更新策略,并接受功能更新永远是新镜像。
- 为每个池记录回滚命令,并每季度在验证池上测试一次。
- 对照 Q&A 的立场审查 Spot 请求,如果业务坚持,就把实验室池路由到标准管理并手工注册主机。
- 为始终在线的基线评估预留或节省计划,并确认你的 VM 系列在 2026 年 7 月之后仍可预留。
- 通过会话主机配置把镜像版本写进主机的 VM 标签,这样“这台主机用的是哪个镜像”在门户里就有答案。
常见问题
更新 AVD 镜像并推送到主机池需要多长时间? 按三个阶段预算。Image Builder 或自定义镜像模板的构建在默认 240 分钟超时下运行,通常一到三小时完成。Compute Gallery 复制到多个区域时可能需要几个小时。随后会话主机更新大约每台主机 20 分钟,主机按批次替换,因此 40 台主机、批次大小为 5 的池大约需要三小时。规划当天构建、下一个维护窗口推送。
AVD 会话主机应该就地打补丁,还是每月重建镜像? Microsoft 的会话主机更新文档指出,在核心源镜像中管理更新是推荐做法,其安全指南也要求每月为基础镜像打补丁。就地打补丁仍然适用于两次构建之间的紧急安全修复。这类修复请使用 Intune 设置目录的质量更新策略、Configuration Manager 或 WSUS,因为 Windows Update for Business 更新环和 Azure Update Manager 都没有针对 Windows Enterprise 多会话版的文档支持。
如何把 AVD 镜像回滚到上一个版本?
至少保留上一个 Compute Gallery 版本,并且永远不要让生产环境指向 latest。对于带会话主机配置的主机池,运行 Update-AzWvdSessionHostConfiguration 并传入上一个版本的资源 ID,然后再安排一次会话主机更新。对于标准主机池,从上一个版本构建新主机,用注册令牌加入,排空有问题的主机,待会话清空后删除。
可以把 Azure Spot VM 用作 AVD 会话主机吗? AVD 门户、会话主机配置架构和部署模板中都没有文档化的 Spot 选项。Spot VM 没有 SLA,并且会在提前 30 秒通知后被逐出。一位 Microsoft 员工在 Microsoft Q&A 上表示 VDI 不是有效的 Spot 工作负载,并建议改用自动缩放。如果你仍想在一次性实验室里使用 Spot,请自行创建 VM,并用注册令牌把它们注册到标准主机池。
会话主机更新与更新标准主机池有什么区别? 会话主机更新是使用会话主机配置创建的主机池的原生功能。你修改配置、安排更新,服务就会按照会话主机管理策略分批排空、替换并删除主机。标准主机池没有这样的功能;你需要用新镜像构建新主机、用注册令牌加入、排空旧主机,再用自己的脚本或流水线移除它们。管理方式在创建主机池时就已固定。
需要帮手吗?Big Hat Group 为美国和加拿大的组织提供 Azure Virtual Desktop 架构与 Windows 365 咨询服务,从镜像流水线评审到完整的主机池重新设计。预约一次探索通话,聊聊你的环境。
来源
- 会话主机更新 - Azure Virtual Desktop
- 更新带会话主机配置的主机池中的会话主机
- 主机池管理方式 - Azure Virtual Desktop
- 部署 Azure Virtual Desktop(会话主机配置视角)
- Azure Virtual Desktop 先决条件
- 创建 Azure Virtual Desktop 黄金镜像
- 自定义镜像模板 - Azure Virtual Desktop
- 使用 Azure VM Image Builder 创建 Azure Virtual Desktop 镜像
- Azure Image Builder 模板参考(buildTimeoutInMinutes、WindowsUpdate 自定义器)
- Azure Compute Gallery 概述
- 在 Azure Compute Gallery 中存储和共享镜像
- 在 Azure Virtual Desktop 中排空会话主机以进行维护
- 自动缩放缩放计划与示例场景
- Azure Virtual Desktop 自动缩放 FAQ
- Windows Enterprise 多会话版 FAQ
- Azure Virtual Desktop FAQ(就地升级、临时 OS 磁盘)
- 将 Azure Virtual Desktop 多会话版与 Microsoft Intune 配合使用
- 使用 Microsoft Configuration Manager 更新会话主机
- Azure Update Manager 更新支持矩阵
- Azure VM 自动来宾修补
- Azure Virtual Desktop 安全建议(Trusted Launch、补丁)
- 关于 Azure Spot 虚拟机
- 将 Azure Virtual Desktop 与 Spot 实例配合使用 - Microsoft Q&A
- Microsoft.DesktopVirtualization hostPools/sessionHostConfigurations 架构
- Azure VM 的临时 OS 磁盘
- Azure Virtual Desktop 新增功能
- 了解并估算 Azure Virtual Desktop 的成本
- 使用预留 VM 实例预付 Azure 虚拟机费用
- 什么是 Azure 节省计划?
- 什么是 FSLogix