Azure 虚拟桌面(经典)会话主机虚拟机配置

重要

此内容适用于不支持 Azure 资源管理器 Azure 虚拟桌面对象的 Azure 虚拟桌面(经典)。 如果要尝试管理 Azure 资源管理器 Azure 虚拟桌面对象,请参阅本文

在配置 Azure 虚拟桌面会话主机虚拟机 (VM) 时,请参阅本文解决遇到的问题。

提供反馈

请访问 Azure 虚拟桌面技术社区,与产品团队和活动社区成员讨论 Azure 虚拟桌面服务。

VM 未加入域

如果在将 VM 加入域时遇到问题,请按照以下说明操作。

错误:凭据不正确

原因: 在 Azure 资源管理器模板界面修复中输入凭据时出现拼写错误。

修复: 执行以下操作之一加以解决。

错误:等待用户输入的超时

原因: 用于完成域加入的帐户可能具有多重身份验证(MFA)。

修复: 执行以下操作之一进行解决。

  • 暂时删除帐户的 MFA。
  • 使用服务帐户。

错误:预配期间使用的帐户无权完成操作

原因: 由于合规性和法规限制,当前使用的帐户没有权限将虚拟机加入域。

修复: 执行以下操作之一进行解决。

  • 使用属于管理员组的帐户。
  • 向正在使用的帐户授予必要的权限。

错误:域名无法解析

原因 1: VM 位于与域所在的虚拟网络(VNET)不关联的虚拟网络上。

修复 1: 在预配 VM 的 VNET 与运行域控制器(DC)的 VNET 之间创建 VNET 对等互连。 请参阅 创建虚拟网络对等互连 - 资源管理器以及不同订阅

原因 2: 使用 Microsoft Entra 域服务时,虚拟网络没有更新其 DNS 服务器设置以指向托管域控制器。

修复 2: 若要更新包含 Microsoft Entra 域服务的虚拟网络的 DNS 设置,请参阅 更新 Azure 虚拟网络的 DNS 设置。

原因 3: 网络接口的 DNS 服务器设置不指向虚拟网络上的相应 DNS 服务器。

修复 3: 执行以下操作之一来解决,请遵循 [更改 DNS 服务器] 中的步骤。

  • 按照 更改 DNS 服务器 中的步骤,将网络接口的 DNS 服务器设置更改为 自定义,并在虚拟网络上指定 DNS 服务器的专用 IP 地址。
  • 使用 更改 DNS 服务器中的步骤,将网络接口的 DNS 服务器设置更改为 从虚拟网络 继承,然后使用 更改 DNS 服务器中的步骤更改虚拟网络的 DNS 服务器设置。

未安装 Azure 虚拟桌面代理和 Azure 虚拟桌面启动加载程序

预配 VM 的建议方法是使用 Azure 资源管理器 创建和预配 Azure 虚拟桌面主机池 模板。 该模板会自动安装 Azure 虚拟桌面代理和 Azure 虚拟桌面代理启动加载程序。

按照这些说明确认组件已安装并检查错误消息。

  1. 确认这两个组件已经安装,可以查看 控制面板>程序>程序和功能。 如果 Azure 虚拟桌面代理Azure 虚拟桌面代理启动加载程序 不可见,则它们不会安装在 VM 上。
  2. 打开 文件资源管理器 并导航到 C:\Windows\Temp\ScriptLog.log。 如果文件缺失,则表示安装了这两个组件的 PowerShell DSC 无法在提供的安全上下文中运行。
  3. 如果文件 C:\Windows\Temp\ScriptLog.log存在,请打开该文件并检查错误消息。

错误:缺少 Azure 虚拟桌面代理和 Azure 虚拟桌面代理启动加载程序。 C:\Windows\Temp\ScriptLog.log也缺失

原因 1: 输入 Azure 资源管理器模板期间提供的凭据不正确或权限不足。

修复 1: 手动将缺少的组件添加到 VM,使用 PowerShell创建主机池

原因 2: PowerShell DSC 能够启动和执行,但无法完成,因为它无法登录到 Azure 虚拟桌面并获取所需的信息。

修复 2: 确认以下列表中的项目。

  • 确保帐户没有启用多因素身份验证。
  • 确认租户名称准确且租户存在于 Azure 虚拟桌面中。
  • 确认帐户至少具有 RDS 参与者权限。

错误:身份验证失败,C:\Windows\Temp\ScriptLog.log错误

原因: PowerShell DSC 能够执行,但无法连接到 Azure 虚拟桌面。

修复: 确认以下列表中的项目。

  • 将 VM 手动注册到 Azure 虚拟桌面服务。
  • 确认用于连接到 Azure Virtual Desktop 的帐户对租户具有创建主机池的权限。
  • 确认帐户未启用多因素认证。

Azure 虚拟桌面代理未注册到 Azure 虚拟桌面服务

首次在会话主机虚拟机上安装 Azure 虚拟桌面代理时(无论是手动安装还是通过 Azure 资源管理器模板和 PowerShell DSC),它会提供一个注册令牌。 以下部分介绍如何排查适用于 Azure 虚拟桌面代理和令牌的问题。

错误:Get-RdsSessionHost cmdlet 中的状态字段显示状态为“不可用”

Get-RdsSessionHost cmdlet 显示状态为“不可用”。

原因: 代理无法将自身更新到新版本。

修复: 按照以下说明手动更新代理。

  1. 在会话主机 VM 上下载新版本的代理。
  2. 启动任务管理器,并在“服务”选项卡中停止 RDAgentBootLoader 服务。
  3. 运行新版本的 Azure 虚拟桌面代理的安装程序。
  4. 当系统提示输入注册令牌时,请删除INVALID_TOKEN条目,然后按下一步(不需要新令牌)。
  5. 完成安装向导。
  6. 打开任务管理器并启动 RDAgentBootLoader 服务。

错误:Azure 虚拟桌面代理注册表项 IsRegistered 显示值 0

原因: 注册令牌已过期或生成时设定的过期值为 999999。

修复: 按照以下说明修复代理注册表错误。

  1. 如果已有注册令牌,请使用 Remove-RDSRegistrationInfo 将其删除。
  2. 使用 Rds-NewRegistrationInfo 生成新令牌。
  3. 确认 -ExpriationHours 参数设置为 72(最大值为 99999)。

错误:运行 Get-RdsSessionHost 时,Azure 虚拟桌面代理未发送心跳信号

原因 1: RDAgentBootLoader 服务已停止。

解决方法 1: 启动任务管理器,如果服务选项卡中显示 RDAgentBootLoader 服务进程的状态为停止,请启动该服务。

原因 2: 端口 443 可能会关闭。

修复 2: 按照以下说明打开端口 443。

  1. 通过从 Sysinternal 工具下载 PSPing 工具来确认端口 443 是否已打开。

  2. 在运行代理的会话主机 VM 上安装 PSPing。

  3. 以管理员身份打开命令提示符并发出以下命令:

    psping rdbroker.wvdselfhost.microsoft.com:443
    
  4. 确认 PSPing 已从 RDBroker 收到信息:

    PsPing v2.10 - PsPing - ping, latency, bandwidth measurement utility
    Copyright (C) 2012-2016 Mark Russinovich
    Sysinternals - www.sysinternals.com
    TCP connect to 13.77.160.237:443:
    5 iterations (warmup 1) ping test:
    Connecting to 13.77.160.237:443 (warmup): from 172.20.17.140:60649: 2.00ms
    Connecting to 13.77.160.237:443: from 172.20.17.140:60650: 3.83ms
    Connecting to 13.77.160.237:443: from 172.20.17.140:60652: 2.21ms
    Connecting to 13.77.160.237:443: from 172.20.17.140:60653: 2.14ms
    Connecting to 13.77.160.237:443: from 172.20.17.140:60654: 2.12ms
    TCP connect statistics for 13.77.160.237:443:
    Sent = 4, Received = 4, Lost = 0 (0% loss),
    Minimum = 2.12ms, Maximum = 3.83ms, Average = 2.58ms
    

排查 Azure 虚拟桌面并行堆栈问题

Azure 虚拟桌面并行堆栈随 Windows Server 2019 及更新版本自动安装。 使用 Microsoft Installer (MSI)在 Microsoft Windows Server 2016 或 Windows Server 2012 R2 上安装并行堆栈。 对于 Microsoft Windows 10,Azure 虚拟桌面并行堆栈已启用 enablesxstackrs.ps1

在会话主机池 VM 上安装或启用并行堆栈有三种主要方法:

  • 使用 Azure 资源管理器 创建和预配新的 Azure 虚拟桌面主机池 模板
  • 通过在主镜像上包含并启用
  • 可以在每个 VM 上手动安装或启用(或者通过扩展工具/使用 PowerShell)

如果 Azure 虚拟桌面并行堆栈出现问题,请从命令提示符键入 qwinsta 命令,确认并行堆栈已安装或启用。

安装并启用并行堆栈后,qwinsta 的输出将列出 rdp-sxs

当 qwinsta 在输出中被列为 rdp-sxs 时,完成并行堆栈的安装或启用。

检查下面列出的注册表项,并确认其值是否匹配。 如果缺少注册表项或值不匹配,请遵循 使用 PowerShell 创建主机池中的说明进行操作, 以了解如何重新安装并排堆栈。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
    Server\WinStations\rds-sxs\"fEnableWinstation":DWORD=1

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal
    Server\ClusterSettings\"SessionDirectoryListener":rdp-sxs

错误:O_REVERSE_CONNECT_STACK_FAILURE

O_REVERSE_CONNECT_STACK_FAILURE 错误代码。

原因: 会话主机 VM 上未安装并行堆栈。

修复: 按照以下说明在会话主机 VM 上安装并行堆栈。

  1. 使用远程桌面协议(RDP)以本地管理员身份直接进入会话主机 VM。

  2. 下载并导入 Azure 虚拟桌面 PowerShell 模块 在 PowerShell 会话中使用(如果尚未这样做),然后运行此 cmdlet 以登录到帐户:

    Add-RdsAccount -DeploymentUrl "https://rdbroker.wvd.microsoft.com"
    
  3. 使用 使用 PowerShell创建主机池来并行安装堆栈。

如何修复故障的 Azure 虚拟桌面并行堆栈

有一些已知情况可能导致并行堆栈出现故障:

  • 未按照步骤的正确顺序启用并排堆栈
  • 自动更新到 Windows 10 增强型通用光盘(EVD)
  • 缺少远程桌面会话主机(RDSH)角色
  • 多次运行 enablesxsstackrc.ps1
  • 在没有本地管理员权限的帐户中运行 enablesxsstackrc.ps1

本部分中的说明可帮助你卸载 Azure 虚拟桌面并排堆栈。 卸载并排堆栈后,转到“将 VM 注册到 Azure 虚拟桌面主机池”,使用 PowerShell 创建主机池 重新安装并排堆栈。

用于运行修正的虚拟机必须位于与具有故障并排堆栈的虚拟机相同的子网和域。

按照以下说明在同一子网和域内运行补救措施:

  1. 使用标准远程桌面协议(RDP)连接到进行修复的 VM。

  2. PsExec v2.40下载 PsExec。

  3. 解压缩下载的文件。

  4. 以本地管理员身份启动命令提示符。

  5. 导航到解压缩 PsExec 的文件夹。

  6. 在命令提示符下,使用以下命令:

            psexec.exe \\<VMname> cmd
    

    注意

    VMname 是具有故障并行堆栈的 VM 的计算机名称。

  7. 单击“同意”接受 PsExec 许可协议。

    软件许可协议屏幕截图。

    注意

    此对话框仅在首次运行 PsExec 时显示。

  8. 在 VM 上打开具有故障并排堆栈的命令提示符会话后,运行 qwinsta 并确认名为 rdp-sxs 的条目可用。 否则,VM 上不存在并行堆栈,因此问题不会绑定到并行堆栈。

    管理员命令提示符

  9. 运行以下命令来列出安装在发生故障的并行堆栈上的 VM 的 Microsoft 组件。

        wmic product get name
    
  10. 使用上述步骤中的产品名称运行以下命令。

        wmic product where name="<Remote Desktop Services Infrastructure Agent>" call uninstall
    
  11. 卸载以“远程桌面”开头的所有产品。

  12. 卸载所有 Azure 虚拟桌面组件后,请按照操作系统的说明操作:

  13. 如果操作系统是 Windows Server,请重启并排堆栈出现故障的 VM(可以使用 Azure 门户或 PsExec 工具)。

如果操作系统Microsoft Windows 10,请继续执行以下说明:

  1. 从运行 PsExec 的 VM 中,打开文件资源管理器,将 disablesxsstackrc.ps1 复制到并排配置堆栈发生故障的 VM 的系统驱动器。

        \\<VMname>\c$\
    

    注意

    VMname 是出现故障的并行堆栈的虚拟机的名称。

  2. 建议的过程:从 PsExec 工具启动 PowerShell 并导航到上一步中的文件夹并运行 disablesxsstackrc.ps1。 或者,您可以运行以下 Cmdlet:

    Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\ClusterSettings" -Name "SessionDirectoryListener" -Force
    Remove-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\rdp-sxs" -Recurse -Force
    Remove-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations" -Name "ReverseConnectionListener" -Force
    
  3. 运行 cmdlet 后,重启具有故障并排堆栈的 VM。

未配置远程桌面许可模式

如果使用管理帐户登录到 Windows 10 企业版多会话,可能会收到一条通知,指出“未配置远程桌面许可模式,远程桌面服务将在 X 天内停止工作。 在连接代理服务器上,使用服务器管理器指定远程桌面许可模式。

如果时间限制过期,将显示一条错误消息,指出“远程会话已断开连接,因为此计算机没有可用的远程桌面客户端访问许可证。

如果您看到这两个消息之一,这意味着映像缺少最新的 Windows 更新,或者您正在通过组策略设置远程桌面许可模式。 按照后续部分中的步骤检查组策略设置,确定 Windows 10 企业版多会话的版本,并安装相应的更新。

注意

当主机池包含 Windows Server 会话主机时,Azure 虚拟桌面只需要 RDS 客户端访问许可证(CAL)。 若要了解如何配置 RDS CAL,请参阅 如何通过客户端访问许可证对 RDS 部署进行许可

禁用远程桌面许可模式组策略设置

通过在 VM 中打开组策略编辑器,并导航到 管理模板>Windows 组件>远程桌面服务>远程桌面会话主机>许可>设置远程桌面许可模式,来检查组策略设置。 如果组策略设置 已启用,请将其更改为 禁用。 如果已禁用,那就保持原样 as-is。

注意

如果通过域设置组策略,请在面向这些 Windows 10 企业版多会话 VM 的策略上禁用此设置。

确定正在使用的 Windows 10 企业版多会话版本

若要检查你拥有的 Windows 10 企业版多会话版本,请执行以下操作:

  1. 使用管理员帐户登录。

  2. 在“开始”菜单旁边的搜索栏中输入“关于”。

  3. 选择 “关于电脑”

  4. 检查“版本”旁边的数字。该数字应为“1809”或“1903”,如下图所示。

    Windows 规范窗口的屏幕截图。版本号以蓝色突出显示。

了解版本号后,请跳到相关部分。

版本 1809

如果版本号显示“1809”,请安装 KB4516077更新

版本 1903

使用 Azure 库中最新版本的 Windows 10 版本 1903 映像重新部署主机操作系统。

由于出现安全错误,无法连接到远程电脑

如果你的用户看到一条错误,显示“由于安全错误,无法连接到远程计算机。 如果这种情况持续发生,请向管理员或技术支持寻求帮助,“验证任何更改默认 RDP 权限的现有策略。 可能会出现此错误的一个策略是“允许通过远程桌面服务安全策略登录”。

若要了解有关此策略的详细信息,请参阅 允许通过远程桌面服务登录。

后续步骤