你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
Azure 虚拟桌面经典将于 2026 年 9 月 30 日停用。 停用后,将阻止与经典资源的连接。
为了防止中断,请在 2026 年 9 月 30 日之前将剩余的经典资源迁移到基于 Azure 资源管理器 的主机池。
迁移模块工具允许你将组织从 Azure 虚拟桌面 (经典) 自动迁移到 Azure 虚拟桌面。 本文将向您展示如何使用该工具。
先决条件
在使用迁移模块之前,请确保已准备好以下内容:
将在其中创建新 Azure 服务对象的 Azure 订阅。
必须分配有参与者角色才能在订阅上创建 Azure 对象,并分配有用户访问管理员角色才能将用户分配给应用程序组。
远程桌面服务至少 (对 RDS 租户或要迁移的特定主机池的 RDS) 参与者权限。
最新版本的 Microsoft.RdInfra.RDPowershell PowerShell 模块。
最新版本的 Az.DesktopVirtualization PowerShell 模块。
最新版本的 Az.Resources PowerShell 模块。
在您的计算机上安装迁移模块。
PowerShell 或 PowerShell ISE 来运行本文中将介绍的脚本。 Microsoft.RdInfra.RDPowershell 模块在 PowerShell Core 中不起作用。
重要
迁移只会在美国地理位置中创建服务对象。 如果尝试将服务对象迁移到另一个地理位置,它将不起作用。 此外,如果 Azure 虚拟桌面 (经典) 部署中的应用程序组超过 500 个,则无法迁移。 只有在重新生成环境以减少 Microsoft Entra 租户中的应用程序组数量时,才能迁移。
准备 PowerShell 环境
首先,需要为迁移过程准备 PowerShell 环境。
若要准备 PowerShell 环境,请执行以下操作:
在开始之前,请通过运行以下 cmdlet 确保你拥有最新版本的 Az.Desktop 虚拟化和 Az.Resources 模块:
Get-Module Az.Resources Get-Module Az.DesktopVirtualization https://www.powershellgallery.com/packages/Az.DesktopVirtualization/ https://www.powershellgallery.com/packages/Az.Resources/如果没有,则必须通过运行以下 Cmdlet 来安装和导入模块:
Install-module Az.Resources Import-module Az.Resources Install-module Az.DesktopVirtualization Import-module Az.DesktopVirtualization接下来,通过运行以下 cmdlet 卸载当前 RDInfra PowerShell 模块:
Uninstall-Module -Name Microsoft.RDInfra.RDPowershell -AllVersions之后,使用以下 cmdlet 安装 RDPowershell 模块:
Install-Module -Name Microsoft.RDInfra.RDPowershell -RequiredVersion 1.0.3414.0 -force Import-module Microsoft.RDInfra.RDPowershell完成所有安装后,运行此 cmdlet 以确保拥有正确版本的模块:
Get-Module Microsoft.RDInfra.RDPowershell现在,让我们通过运行以下 Cmdlet 来安装和导入迁移模块:
Install-Module -Name PackageManagement -Repository PSGallery -Force Install-Module -Name PowerShellGet -Repository PSGallery -Force # Then restart shell Install-Module -Name Microsoft.RdInfra.RDPowershell.Migration -AllowClobber Import-Module <Full path to the location of the migration module>\Microsoft.RdInfra.RDPowershell.Migration.psd1完成后,在 PowerShell 窗口中登录到 Azure 虚拟桌面 (经典) :
Add-RdsAccount -DeploymentUrl https://rdbroker.wvd.microsoft.com登录到 Azure 资源管理器:
Login-AzAccount如果有多个订阅,请使用此 cmdlet 选择要将资源迁移到的订阅:
Select-AzSubscription -Subscriptionid <subID>在 Azure 门户中为所选订阅注册资源提供程序。
最后,需要注册提供商。 可采用两种方式执行此操作:
如果你想使用 PowerShell,请运行此 cmdlet:
Register-AzResourceProvider -ProviderNamespace Microsoft.DesktopVirtualization如果更喜欢使用 Azure 门户,请打开并登录到 Azure 门户,然后转到“订阅”并选择要使用的订阅的名称。 之后,转到 资源提供程序>Microsoft.DesktopVirtualization 并选择 “重新注册”。 UI 中目前不会有任何更改,但 PowerShell 环境现在应该已准备好运行该模块。
将 Azure 虚拟桌面 (经典) 资源迁移到 Azure 资源管理器
PowerShell 环境已准备就绪,可以开始迁移过程。
若要将 Azure 虚拟桌面 (经典) 资源迁移到 Azure 资源管理器:
在迁移之前,如果你想要了解如何将现有经典资源映射到新的 Azure 资源管理器 资源,请运行此 cmdlet:
Get-RdsHostPoolMigrationMapping使用 Get-RdsHostPoolMigrationMapping,可以创建一个映射资源去向的 CSV 文件。 例如,如果租户的名称是“Contoso”,并且你希望将映射文件存储在“contosouser”文件中,则应运行如下所示的 cmdlet:
Get-RdsHostPoolMigrationMapping -Tenant Contoso -HostPool Office -Location EastUS -OutputFile 'C:\\Users\contosouser\OneDrive - Microsoft\Desktop\mapping.csv'接下来,运行 Start-RdsHostPoolMigration cmdlet 来选择是迁移单个主机池还是迁移租户中的所有主机池。
例如:
Start-RdsHostPoolMigration -Tenant Contoso -Location WestUS如果要将资源迁移到特定的主机池,请包含主机池名称。 例如,如果要移动名为“Office”的主机池,请运行如下所示的命令:
Start-RdsHostPoolMigration -Tenant Contoso -HostPool Office -CopyUserAssignments $false -Location EastUS如果未提供工作区名称,模块将根据租户名称自动为你创建一个工作区名称。 但是,如果更喜欢使用特定工作区,可以输入其资源 ID,如下所示:
Start-RdsHostPoolMigration -Tenant Contoso -HostPool Office -CopyUserAssignments -Location EastUS -Workspace <Resource ID of workspacename>如果想要使用特定工作区,但不知道其资源 ID,请运行此 cmdlet:
Get-AzWvdWorkspace -WorkspaceName <workspace> -ResourceGroupName <resource group> |fl还需要为现有用户分配指定用户分配模式:
- 使用“复制”将所有用户分配从旧应用程序组复制到Azure 资源管理器应用程序组。 用户将能够看到其客户端的两个版本的源。
- 如果不想更改用户分配,请使用 “无 ”。 稍后,可以使用 Azure 门户、PowerShell 或 API 将用户或用户组分配给应用程序组。 用户将只能使用 Azure 虚拟桌面 (经典) 客户端查看源。
每个订阅只能复制 2,000 个用户分配,因此限制将取决于订阅中已有的分配数。 该模块根据您已有的分配数计算限制。 如果没有足够的分配进行复制,则会收到一条错误消息,指出“角色分配配额不足,无法复制用户分配。 重新运行命令而不使用 -CopyUserAssignments 开关进行迁移。”
运行命令后,模块最多需要 15 分钟才能创建服务对象。 如果您复制或移动了任何用户分配,这将增加模块完成所有设置所需的时间。
Start-RdsHostPoolMigration cmdlet 完成后,应会看到以下内容:
指定的租户或主机池的 Azure 服务对象。
两个新资源组:
名为“Tenantname”的资源组,其中包含你的工作区。
名为“Tenantname_originalHostPoolName”的资源组,其中包含主机池和桌面应用程序组。
发布到新创建的应用程序组的任何用户。
虚拟机将在现有主机池和新主机池中同时可用,以避免迁移过程中的用户停机。 这允许用户连接到同一用户会话。
由于这些新的 Azure 服务对象是Azure 资源管理器对象,因此模块无法对其设置基于角色的访问控制 (RBAC) 权限或诊断设置。 因此,需要手动更新这些对象的 RBAC 权限和设置。
模块验证初始用户连接后,还可以根据需要将应用程序组发布到更多用户或用户组。
注意
迁移后,如果在向用户分配权限后将应用程序组移动到其他资源组,它将删除所有 RBAC 角色。 需要重新分配用户 RBAC 权限。
如果要删除所有 Azure 虚拟桌面 (经典) 服务对象,请运行 Complete-RdsHostPoolMigration 以完成迁移过程。 此 cmdlet 将删除所有 Azure 虚拟桌面 (经典) 对象,仅保留新的 Azure 对象。 用户将只能在其客户端上看到新创建的应用程序组的源。 完成此命令后,可以安全地删除 Azure 虚拟桌面 (经典) 租户以完成该过程。
例如:
Complete-RdsHostPoolMigration -Tenant Contoso -Location EastUS如果想要完成特定的主机池,可以在 cmdlet 中包含主机池名称。 例如,如果你想要完成一个名为“Office”的主机池,则可以使用如下命令:
Complete-RdsHostPoolMigration -Tenant Contoso -HostPool Office -Location EastUS这将删除 Azure 虚拟桌面 (经典) 创建的所有服务对象。 你将只剩下新的 Azure 对象,用户只能在其客户端上看到新创建的应用程序组的源。 完成迁移后,需要在Azure虚拟桌面 (经典) 中显式删除租户。
如果已改变迁移主意并想要还原该过程,请运行 Revert-RdsHostPoolMigration cmdlet。
例如:
Revert-RdsHostPoolMigration -Tenant Contoso -Location EastUS如果要还原特定主机池,可以在命令中包含主机池名称。 例如,如果要还原名为“Office”的主机池,则可以输入如下内容:
Revert-RdsHostPoolMigration -Tenant Contoso -HostPool Office -Location EastUS此 cmdlet 将删除所有新建的 Azure 服务对象。 用户将只能在其客户端中看到 Azure 虚拟桌面 (经典) 对象的源。
但是,cmdlet 不会删除模块创建的工作区或其关联的资源组。 需要手动删除这些项目才能将其清除。
如果还不想删除 Azure 虚拟桌面 (经典) 服务对象,但确实想要测试迁移,可以运行 Set-RdsHostPoolHidden。
例如:
Set-RdsHostPoolHidden -Tenant Contoso -Hostpool Office -Hidden $true -Location WestUS将状态设置为 “true” 将隐藏Azure虚拟桌面 (经典) 资源。 将其设置为“false”将向用户显示资源。
-Hostpool 参数是可选的。 如果要隐藏特定的 Azure 虚拟桌面 (经典) 主机池,则可以使用此参数。
此 cmdlet 将隐藏 Azure 虚拟桌面 (经典) 用户源和服务对象,而不是删除它们。 但是,这通常仅用于测试,不计为已完成的迁移。 若要完成迁移,需要运行 Complete-RdsHostPoolMigration 命令。 否则,请通过运行 Revert-RdsHostPoolMigration 还原部署。
自动迁移疑难解答
本节介绍如何解决迁移模块中常见的问题。
我无法访问租户
首先,尝试以下两项操作:
- 确保管理员帐户具有访问租户所需的权限。
- 尝试在租户上运行 Get-RdsTenant 。
如果这两项都正常工作,请尝试运行 Set-RdsMigrationContext cmdlet 来设置迁移的 RDS 上下文和 ADAL 上下文:
通过运行 Add-RdsAccount cmdlet 创建 RDS 上下文。
在全局变量 $rdMgmtContext 中查找 RDS 上下文。
在全局变量 $AdalContext 中查找 ADAL 上下文。
使用在以下格式中找到的变量运行 Set-RdsMigrationContext :
Set-RdsMigrationContext -RdsContext <rdscontext> -AdalContext <adalcontext>
后续步骤
若要了解如何改为手动迁移部署,请参阅从Azure虚拟桌面手动迁移 (经典) 。
迁移后,请查看我们的教程来了解 Azure 虚拟桌面的工作原理。 有关高级管理功能的信息,请参阅 展开现有主机池 并 自定义 RDP 属性。
若要了解有关服务对象的详细信息,请检查 Azure 虚拟桌面环境。