准备和自定义 Azure 虚拟桌面的 VHD 映像

本文介绍如何准备用于上传到 Azure 的主虚拟硬盘 (VHD) 映像,包括如何创建虚拟机 (VM) 并在其中安装软件。 这些说明针对的是特定于 Azure 虚拟桌面的配置,可与组织的现有流程结合使用。

重要

建议使用 Azure Compute Gallery 或 Azure 门户中的映像。 但如果确实需要使用自定义映像,请确保 VM 上尚未安装 Azure 虚拟桌面代理。 如果这样做,请按照步骤 1:卸载所有代理、启动加载程序和堆栈组件程序中的说明从 VM 中卸载代理和所有相关组件,或者在卸载了代理的情况下从 VM 创建新映像。 将自定义映像与 Azure 虚拟桌面代理一起使用可能会导致映像出现问题,例如阻止注册,原因是主机池注册令牌将过期,而这将阻止用户会话连接。

创建 VM

Windows 10 企业版多会话可在 Azure Compute Gallery 或Azure 门户中使用。 自定义此映像有两种方法。

第一种方法是在 Azure 中预配虚拟机 (VM),即按照从托管的映像创建 VM 中的说明执行操作,然后跳到软件准备和安装

第二种方法是在本地创建映像,即下载映像,预配 Hyper-V VM,然后根据需要对其进行自定义。在以下部分,我们将介绍这种方法。

创建本地映像

可以按照将映像版本导出到托管磁盘中的说明下载映像,然后从 Azure 下载 Windows VHD。 将映像下载到本地位置后,打开“Hyper-V 管理器”,使用复制的 VHD 创建 VM。 下面是简单版本的说明,有关更加详细的说明,请参阅在 Hyper-V 中创建虚拟机

使用复制的 VHD 创建 VM:

  1. 打开“新建虚拟机向导”

  2. 在“指定代数”页面上,选择“第 1 代”。

    “指定代系”页的屏幕截图。已选择“第 1 代”选项。

  3. 在“检查点类型”下,取消选中复选框,禁用检查点。

    “检查点”页中“检查点类型”部分的屏幕截图。

此外,还可以在 PowerShell 中运行以下 cmdlet 来禁用检查点。

Set-VM -Name <VMNAME> -CheckpointType Disabled

固定磁盘

如果基于现有 VHD 创建 VM,则默认创建动态磁盘。 可以通过选择“编辑磁盘...”将其更改为固定磁盘,如下图所示。 有关更加详细的说明,请参阅准备上传到 Azure 的 Windows VHD 或 VHDX

“编辑磁盘”选项的屏幕截图。

还可以运行以下 PowerShell 命令,将磁盘更改为固定磁盘。

Convert-VHD -Path c:\test\MY-VM.vhdx -DestinationPath c:\test\MY-NEW-VM.vhd -VHDType Fixed

软件准备和安装

本部分介绍如何准备和安装 FSLogix 和 Windows Defender,以及一些用于应用和映像注册表的基本配置选项。

如果要在 VM 上安装 Microsoft 365 应用企业版和 OneDrive,请参阅在主 VHD 映像上安装 Office,并按照相关说明安装应用。 完成后,请返回到本文章。

如果用户需要访问某些 LOB 应用程序,建议在完成本部分说明后再安装这些应用程序。

设置 FSLogix 配置文件容器

要将 FSLogix 容器作为映像的一部分包括在内,请按照使用文件共享为主机池创建配置文件容器中的说明进行操作。 通过此快速入门可测试 FSLogix 容器的功能。

为 FSLogix 配置防病毒排除项

如果 VM 中配置了 Windows Defender,请确保其配置为在附加期间不扫描 VHD 和 VHDX 文件的全部内容。 可以在配置防病毒文件和文件夹排除项中找到 FSLogix 的排除项列表。

此项配置只是在附加期间取消扫描 VHD 和 VHDX 文件,但不会影响实时扫描。

如果正在使用 Windows Defender,那么你可详细了解如何配置 Windows Defender 来排除对某些文件的扫描:基于文件扩展名和文件夹位置配置和验证排除项

禁用自动更新

通过本地组策略禁用自动更新:

  1. 打开“本地组策略编辑器”\“管理模板”\“Windows 组件”\“Windows 更新”。
  2. 右键单击“配置自动更新”,并将其设置为“已禁用”。

还可以从提升的 PowerShell 提示符运行以下命令以禁用自动更新。

New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name NoAutoUpdate -PropertyType DWORD -Value 1 -Force

指定 Windows 10 电脑的开始布局(可选)

从提升的 PowerShell 提示符运行以下命令以指定 Windows 10 电脑的开始布局。

New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" -Name SpecialRoamingOverrideAllowed -PropertyType DWORD -Value 1 -Force

设置时区重定向

由于主机池中的所有 VM 都是同一安全组的一部分,因此可以在组策略级别强制执行时区重定向。

重定向时区:

  1. 在 Active Directory 服务器上,打开“组策略管理控制台”。
  2. 展开你的域和组策略对象。
  3. 右键单击为组策略设置创建的“组策略对象”,然后选择“编辑”。
  4. 在“组策略管理编辑器”中,导航到“计算机配置”>“策略”>“管理模板”>“Windows 组件”>“远程桌面服务”>“远程桌面会话主机”>“设备和资源重定向”。
  5. 启用“允许时区重定向”设置。

还可以从提升的 PowerShell 提示符运行以下命令以重定向时区:

New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name fEnableTimeZoneRedirection -PropertyType DWORD -Value 1 -Force

禁用存储感知

对于使用 Windows 10 企业版或 Windows 10 企业版多会话的 Azure 虚拟桌面会话主机,建议禁用存储感知。 安装操作系统的磁盘通常很小,用户数据通过配置文件漫游远程存储。 这种情况会导致存储感知认为磁盘的可用空间严重不足。 可以使用注册表在映像中禁用存储感知,也可以使用组策略在部署会话主机后禁用存储感知。

  • 对于注册表,可从提升的 PowerShell 提示符运行以下命令来禁用存储感知:

    New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy" -Name 01 -PropertyType DWORD -Value 0 -Force
    
  • 对于组策略,请通过将“计算机配置”>“管理模板”>系统”>“存储感知”>“允许存储感知”设置设为“已禁用”来配置组策略对象。

包括其他语言支持

本文不介绍如何配置语言和区域支持。 有关详细信息,请参阅以下文章:

其他应用程序和注册表配置

本部分介绍应用程序和操作系统配置。 本部分中的所有配置都是通过添加、更改或删除注册表项来完成的。

对于 Windows 10 企业版多会话上遥测数据的反馈中心收集,请从提升的 PowerShell 提示符运行以下命令:

New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name AllowTelemetry -PropertyType DWORD -Value 3 -Force

若要防止 Watson 崩溃,请从提升的 PowerShell 提示符运行以下命令:

Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting" -Name Corporate* -Force -Verbose

若要启用 5k 分辨率支持,请从提升的 PowerShell 提示符运行以下命令。 必须先运行命令,然后才能启用并排堆栈。

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name MaxMonitors -PropertyType DWORD -Value 4 -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name MaxXResolution -PropertyType DWORD -Value 5120 -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name MaxYResolution -PropertyType DWORD -Value 2880 -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\rdp-sxs" -Name MaxMonitors -PropertyType DWORD -Value 4 -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\rdp-sxs" -Name MaxXResolution -PropertyType DWORD -Value 5120 -Force
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\rdp-sxs" -Name MaxYResolution -PropertyType DWORD -Value 2880 -Force

准备要上传到 Azure 的映像

完成配置并安装所有应用程序后,按照准备要上传到 Azure 的 Windows VHD 或 VHDX 中的说明来准备映像。

准备好用于上传的映像后,确保 VM 处于关闭或已解除分配状态。

将主映像上传到 Azure 中的存储帐户

本部分仅适用于在本地创建主映像的情况。

以下说明将介绍如何将主映像上传到 Azure 存储帐户。 如果还没有 Azure 存储帐户,请按照此文中的说明创建一个。

  1. 将 VM 映像 (VHD) 转换为固定映像(如果尚未转换)。 如果未将映像转换为固定映像,则无法成功创建映像。

  2. 将 VHD 上传到存储帐户中的 blob 容器。 可以通过存储资源管理器工具快速上传。 有关存储资源管理器工具的详细信息,请参阅此文

    Azure 存储资源管理器工具搜索窗口的屏幕截图。已选中“将 .vhd 或 vhdx 文件作为页 Blob 上传(建议)”复选框。

  3. 接下来,在浏览器中转到 Azure 门户,搜索“映像”。搜索后你会转到“创建映像”页,如以下屏幕截图所示:

    Azure 门户中“创建映像”页的屏幕截图,已为映像填充示例值。

  4. 创建映像后,应会看到一条通知,如下屏幕截图所示:

    “已成功创建映像”通知的屏幕截图。

后续步骤

现在,你已拥有映像,则可以创建或更新主机池。 有关如何创建和更新主机池的详细信息,请参阅以下文章:

如果在准备或自定义 VHD 映像后遇到连接问题,请查看故障排除指南获取帮助。