共用方式為


將 MSIX 套件從 MSIX 應用程式附加移轉至應用程式連結

應用程式附加可透過 MSIX 應用程式附加改善系統管理與用戶體驗。 如果您使用 MSIX 應用程式連結,您可以使用 PowerShell 腳本將 MSIX 套件遷移至應用程式附加。

移轉文稿可以執行下列動作:

  • 建立新的應用程式附加套件物件,並視需要刪除原始的 MSIX 套件物件。

  • 從與主機集區和 MSIX 套件相關聯的應用程式群組複製許可權。

  • 複製主機集區和 MSIX 套件的位置和資源群組。

  • 記錄移轉活動。

必要條件

若要使用移轉文稿,您需要:

  • 設定為驗證環境的主機集區,至少有一個 MSIX 套件已新增 MSIX 應用程式連結。

  • 在主機集區上指派桌面 虛擬化參與者 Azure 角色型訪問控制 (RBAC) 角色的 Azure 帳戶。

  • 使用 PowerShell 的本機裝置。 請確定您已安裝最新版的 Az PowerShellMicrosoft Graph PowerShell SDK 。 具體而言,需要下列模組:

    • Az.DesktopVirtualization
    • Az.Accounts
    • Az.Resources
    • Microsoft.Graph.Authentication

參數

以下是您可以搭配移轉文本使用的參數:

參數 描述
MsixPackage 要移轉至應用程式附加物件的 MSIX 套件物件。 這個值可以透過管線傳入。
PermissionSource 從何處取得新應用程式附加物件的許可權。 預設為未授與任何許可權。 選項是:
  • DAG:與主機集區和 MSIX 套件相關聯的傳統型應用程式群組
  • RAG:一或多個與主機集區和 MSIX 套件相關聯的 RemoteApp 應用程式群組
這兩個選項都會將許可權授與所有使用者和群組,其許可權會特別限定於應用程式群組。
HostPoolsForNewPackage 主機集區的資源標識碼,可將新的應用程式附加物件與 產生關聯。 預設為無主機集區。 主機集區必須位於與應用程式連結套件相關聯的相同位置。
TargetResourceGroupName 用來儲存新應用程式附加物件的資源群組。 預設為 MSIX 套件相關聯的主機集區資源群組。
Location Azure 區域,以在 中建立新的應用程式附加物件。 默認為與 MSIX 套件相關聯的主機集區位置。 應用程式附加套件必須位於與其相關聯的主機集區相同的位置。
DeleteOrigin 移轉後刪除來源 MSIX 套件。
IsActive 啟用新的應用程式附加物件。
DeactivateOrigin 在移轉後停用來源 MSIX 套件物件。
PassThru 傳遞新的應用程式附加物件。 Passthru 會傳回所建立封裝的物件。 如果您想要檢查此值,或將它傳遞給另一個 PowerShell 命令,請使用此值。
LogInJSON 以 JSON 格式寫入記錄檔。
LogFilePath 記錄檔的路徑,預設為 MsixMigration[Timestamp].log 暫存資料夾中的 ,例如 C:\Users\%USERNAME%\AppData\Local\Temp\MsixMigration<DATETIME>.log。 執行文本時,記錄的路徑會寫入主控台。

下載並執行移轉腳本

以下說明如何從 MSIX 應用程式附加至應用程式附加移轉 MSIX 套件。

重要

在下列範例中,您必須自己變更 <placeholder> 的值。

  1. 在您的本機裝置上開啟 PowerShell 提示字元。

  2. 執行下列命令來下載 PowerShell 腳稿 Migrate-MsixPackagesToAppAttach.ps1 並將解除封鎖:

    $url = "https://raw.githubusercontent.com/Azure/RDS-Templates/master/msix-app-attach/MigrationScript/Migrate-MsixPackagesToAppAttach.ps1"
    $filename = $url.Split('/')[-1]
    
    Invoke-WebRequest -Uri $url -OutFile $filename | Unblock-File
    
  3. 執行下列命令以匯入必要的模組:

    Import-Module Az.DesktopVirtualization
    Import-Module Az.Accounts
    Import-Module Az.Resources
    Import-Module Microsoft.Graph.Authentication
    
  4. 執行下列命令並遵循提示登入您的 Azure 帳戶,以連線到 Azure:

    Connect-AzAccount
    
  5. 執行下列命令以連線到 Microsoft Graph:

    Connect-MgGraph -Scopes "Group.Read.All"
    

下列小節包含如何使用移轉腳本的一些範例。 如需所有可用的參數和每個參數的描述,請參閱 parameters 區段。

提示

如果您未將任何參數傳遞至移轉腳本,則會有下列預設行為:

  • 不會將許可權授與新的應用程式附加套件。
  • 新的應用程式連結套件不會與任何主機集區相關聯,而且處於非使用中狀態。
  • 新的應用程式連結套件會建立在與主機集區相同的資源群組和位置中。
  • 原始 MSIX 套件仍在使用中,不會停用或刪除。
  • 記錄資訊會寫入預設檔案路徑。

移轉新增至主機集區和應用程式群組的特定 MSIX 套件

以下是將新增至主機集區的特定 MSIX 套件從 MSIX 應用程式附加至應用程式連結的範例。 此範例:

  • 將 MSIX 套件移轉至與主機集區相同的資源群組和位置。
  • 將應用程式附加中的 MSIX 套件指派給相同的主機集區,以及與 RemoteApp 應用程式群組來源相同的使用者。
  • 讓 MSIX 應用程式中的現有 MSIX 套件元件組態在主機集區上保持 作用 中狀態。 如果您想要立即停用 MSIX 套件,請使用 -DeactivateOrigin 參數。
  • 在應用程式附加 使用中設定新的 MSIX 套件元件元件。 如果您想要立即啟用 MSIX 套件,請使用 -IsActive 參數。
  • 將記錄資訊寫入預設檔案路徑和格式。
  1. 從相同的 PowerShell 提示字元中,執行下列命令,以取得新增至主機集區的 MSIX 套件清單:

    $parameters = @{
        HostPoolName = '<HostPoolName>'
        ResourceGroupName = '<ResourceGroupName>'
    }
    
    Get-AzWvdMsixPackage @parameters | Select-Object DisplayName, Name
    

    輸出類似於下列範例:

    DisplayName Name
    ----------- ----
    MyApp       hp01/MyApp_1.0.0.0_neutral__abcdef123ghij
    
  2. 尋找您要移轉的 MSIX 套件,並使用上一個輸出中的 參數值 Name

    $parameters = @{
        HostPoolName = '<HostPoolName>'
        ResourceGroupName = '<ResourceGroupName>'
    }
    
    $msixPackage = Get-AzWvdMsixPackage @parameters | ? Name -Match '<MSIXPackageName>'
    $hostPoolId = (Get-AzWvdHostPool @parameters).Id
    
  3. 執行下列命令來移轉 MSIX 套件:

    $parameters = @{
        PermissionSource = 'RAG'
        HostPoolsForNewPackage = $hostPoolId
        PassThru = $true
    }
    
    $msixPackage | .\Migrate-MsixPackagesToAppAttach.ps1 @parameters
    

移轉所有新增至主機集區的 MSIX 套件

以下是將新增至主機集區的所有 MSIX 套件從 MSIX 應用程式附加移轉至應用程式連結的範例。 此範例:

  • 將 MSIX 套件移轉至相同的資源群組和位置。
  • 將新的應用程式附加套件新增至相同的主機集區。
  • 將所有應用程式附加套件設定為作用中。
  • 將所有 MSIX 套件設定為非使用中。
  • 從相關聯的桌面應用程式群組複製許可權。
  • 以 JSON 格式將記錄資訊寫入自定義檔案路徑 C:\MsixToAppAttach.log
  1. 從相同的 PowerShell 提示字元中,執行下列命令,以取得新增至主機集區的所有 MSIX 套件,並將其儲存在變數中:

    $parameters = @{
        HostPoolName = '<HostPoolName>'
        ResourceGroupName = '<ResourceGroupName>'
    }
    
    $msixPackages = Get-AzWvdMsixPackage @parameters
    $hostPoolId = (Get-AzWvdHostPool @parameters).Id   
    
  2. 執行下列命令來移轉 MSIX 套件:

    $logFilePath = "C:\Temp\MsixToAppAttach.log"
    
    $parameters = @{
        IsActive = $true
        DeactivateOrigin = $true
        PermissionSource = 'DAG'
        HostPoolsForNewPackage = $hostPoolId
        PassThru = $true
        LogInJSON = $true
        LogFilePath = $LogFilePath
    }
    
    $msixPackages | .\Migrate-MsixPackagesToAppAttach.ps1 @parameters