從 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 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 Resource Manager:
Login-AzAccount
如果您有多個訂用帳戶,請選取您想要用以移轉資源的訂閱來使用此 Cmdlet:
Select-AzSubscription -Subscriptionid <subID>
在 Azure 入口網站中,針對所選訂用帳戶註冊資源提供者。
最後,您必須註冊提供者。 有兩種方式可讓您完成這個步驟:
如果您想要使用 PowerShell,請執行此 Cmdlet:
Register-AzResourceProvider -ProviderNamespace Microsoft.DesktopVirtualization
如果您想要使用 Azure 入口網站,請開啟並登入Azure 入口網站,然後移至 [訂用帳戶],然後選取您想要使用的訂用帳戶名稱。 之後,移至 [資源提供者]>[Microsoft.DesktopVirtualization],然後選取 [重新註冊]。 您目前不會在 UI 中看到任何變更,但您的 PowerShell 環境現在應該已準備好執行模組。
將 Azure 虛擬桌面 (傳統) 資源移轉至 Azure Resource Manager
現在您的 PowerShell 環境已就緒,您可以開始移轉程序。
若要將 Azure 虛擬桌面 (傳統) 資源移轉至 Azure Resource Manager:
在移轉之前,如果您想要瞭解現有傳統資源如何對應至新的 Azure Resource Manager 資源,請執行此 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
如果您沒有提供工作區名稱,模組將會自動根據租用戶名稱為您建立一個。 不過,如果您想要使用特定工作區,則可以輸入其資源識別碼,如下所示:
Start-RdsHostPoolMigration -Tenant Contoso -HostPool Office -CopyUserAssignments -Location EastUS -Workspace <Resource ID of workspacename>
如果您想要使用特定工作區,但不知道其資源識別碼,請執行此 Cmdlet:
Get-AzWvdWorkspace -WorkspaceName <workspace> -ResourceGroupName <resource group> |fl
您也需要為現有的使用者指派指定使用者指派模式:
- 使用 [複製] 將舊應用程式群組中的所有使用者指派複製到 Azure Resource Manager 應用程式群組。 使用者將可以看到兩個用戶端版本的摘要。
- 如果您不想變更使用者指派,請使用 [無]。 之後,您可以使用 Azure 入口網站、PowerShell 或 API,將使用者或使用者群組指派給應用程式群組。 使用者將只能看到使用 Azure 虛擬桌面 (傳統) 用戶端的摘要。
每個訂用帳戶只能複製 2,000 個使用者指派,因此您的限制將取決於訂用帳戶中已有的指派數量。 此模組會根據您已有的指派數量來計算限制。 如果您沒有足夠的指派可供複製,則會收到錯誤訊息,指出「角色指派配額不足,無法複製使用者指派。 請在不使用 -CopyUserAssignments 參數的情況下重新執行命令以進行移轉。」
執行命令之後,模組最多需要 15 分鐘才能建立服務物件。 如果您複製或移動了任何使用者指派,則會增加模組完成所有設定所需的時間。
在 Start-RdsHostPoolMigration Cmdlet 完成之後,您應該會看到下列內容:
您所指定租用戶或主機集區的 Azure 服務物件。
兩個新的資源群組:
名為「Tenantname」的資源群組,其中包含您的工作區。
名為「Tenantname_originalHostPoolName」的資源群組,其中包含主機集區和桌面應用程式群組。
您發佈至新建立應用程式群組的任何使用者。
虛擬機器可在現有和新的主機集區中使用,以避免在移轉程序期間發生使用者停機。 這可讓使用者連線至相同的使用者工作階段。
由於這些新的 Azure 服務物件屬於 Azure Resource Manager 物件,因此模組無法設定角色型存取控制 (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 虛擬桌面環境。