次の方法で共有


MSIX アプリのアタッチからアプリのアタッチへの MSIX パッケージの移行

アプリ アタッチにより、MSIX アプリのアタッチに対する管理およびユーザー エクスペリエンスが向上します。 MSIX アプリのアタッチを使用する場合は、PowerShell スクリプトを使用して MSIX パッケージをアプリのアタッチに移行できます。

移行スクリプトでは、次のアクションを実行できます。

  • 新しいアプリのアタッチ パッケージ オブジェクトを作成し、必要に応じて元の MSIX パッケージ オブジェクトを削除できます。

  • ホスト プールと MSIX パッケージに関連付けられているアプリケーション グループからアクセス許可をコピーします。

  • ホスト プールと MSIX パッケージの場所とリソース グループをコピーします。

  • 移行アクティビティをログに記録します。

前提条件

移行スクリプトを使用するには、次のものが必要です。

  • MSIX アプリのアタッチで少なくとも 1 つの 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 パッケージに関連付けられている 1 つ以上の RemoteApp アプリケーション グループ
どちらのオプションも、アプリケーション グループに対して明示的にスコープが設定されているすべてのアクセス許可を持つすべてのユーザーとグループにアクセス許可を付与します。
HostPoolsForNewPackage 新しいアプリのアタッチ オブジェクトを関連付けるホスト プールのリソース ID。 既定では、ホスト プールはありません。 ホスト プールは、関連付けられているアプリのアタッチ パッケージと同じ場所にある必要があります。
TargetResourceGroupName 新しいアプリのアタッチ オブジェクトを格納するリソース グループ。 既定では、MSIX パッケージが関連付けられているホスト プールのリソース グループです。
Location 新しいアプリのアタッチ オブジェクトを作成する Azure リージョン。 既定値は、MSIX パッケージが関連付けられているホスト プールの場所です。 アプリのアタッチ パッケージは、関連付けられているホスト プールと同じ場所にある必要があります。
DeleteOrigin 移行後にソース MSIX パッケージを削除します。
IsActive 新しいアプリのアタッチ オブジェクトを有効にします。
DeactivateOrigin 移行後にソース MSIX パッケージ オブジェクトを無効にします。
PassThru 新しいアプリのアタッチ オブジェクトを渡します。 Passthru は、作成されたパッケージのオブジェクトを返します。 この値は、検査する場合や別の PowerShell コマンドに渡す場合に使用します。
LogInJSON JSON 形式でログ ファイルに書き込みます。
LogFilePath ログ ファイルのパス。既定では、C:\Users\%USERNAME%\AppData\Local\Temp\MsixMigration<DATETIME>.log などの一時フォルダー内の MsixMigration[Timestamp].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"
    

次のサブセクションには、移行スクリプトの使用方法の例がいくつか含まれています。 使用可能なすべてのパラメーターと各パラメーターの説明については、「パラメーター」セクションを参照してください。

ヒント

移行スクリプトにパラメーターを渡さない場合、既定の動作は次のようになります。

  • 新しいアプリのアタッチ パッケージに対するアクセス許可は付与されません。
  • 新しいアプリのアタッチ パッケージは、どのホスト プールにも関連付けられていないので、非アクティブです。
  • 新しいアプリのアタッチ パッケージは、ホスト プールと同じリソース グループと場所に作成されます。
  • 元の 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