你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
借助迁移模块工具,可以自动将组织从 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 Virtualization 和 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.Desktop”“虚拟 ”,然后选择“ 重新注册”。 你目前不会在 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 资源管理器应用程序组。 用户将能够查看其客户端的两个版本的源。
- 如果不想更改用户分配,请使用 None 。 稍后,可以使用 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 虚拟桌面环境。