将 MSIX 包从 MSIX 应用附加迁移到应用附加
应用附加通过 MSIX 应用附加改进管理和用户体验。 如果使用 MSIX 应用附加,则可以使用 PowerShell 脚本将 MSIX 包迁移到应用附加。
迁移脚本可执行以下操作:
创建新的应用附加包对象,并在必要时可以删除原始 MSIX 包对象。
从与主机池和 MSIX 包关联的应用程序组复制权限。
复制主机池和 MSIX 包的位置和资源组。
记录迁移活动。
先决条件
若要使用迁移脚本,需要:
配置为验证环境的主机池,至少有一个 MSIX 包随 MSIX 应用附加一起添加。
在主机池上分配的桌面虚拟化参与者 Azure 基于角色的访问控制 (RBAC) 角色的 Azure 帐户。
使用 PowerShell 的本地设备。 请确保已安装最新版本的 Az PowerShell 和 Microsoft Graph PowerShell SDK。 具体来说,需要以下模块:
- Az.DesktopVirtualization
- Az.Accounts
- Az.Resources
- Microsoft.Graph.Authentication
参数
以下是可用于迁移脚本的参数:
参数 | 说明 |
---|---|
MsixPackage |
要迁移到应用附加对象的 MSIX 包对象。 此值可以通过管道传入。 |
PermissionSource |
从何处获取新应用附加对象的权限。 默认为未授予任何权限。 选项包括:
|
HostPoolsForNewPackage |
要与新应用附加对象关联的主机池的资源 ID。 默认为无主机池。 主机池必须与它们关联的应用附加包位于同一位置。 |
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>
值更改为自己的值。
在本地设备上打开 PowerShell 提示符。
通过运行以下命令下载 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
运行以下命令来导入所需的模块:
Import-Module Az.DesktopVirtualization Import-Module Az.Accounts Import-Module Az.Resources Import-Module Microsoft.Graph.Authentication
通过运行以下命令并按照提示登录到 Azure 帐户,连接到 Azure:
Connect-AzAccount -AzureEnvironmentName AzureChinaCloud
通过运行以下命令连接到 Microsoft Graph:
Connect-MgGraph -Scopes "Group.Read.All"
以下小节包含有关如何使用迁移脚本的一些示例。 有关所有可用参数和每个参数的说明,请参阅参数部分。
提示
如果未将任何参数传递给迁移脚本,则它具有以下默认行为:
- 不会向新应用附加包授予任何权限。
- 新的应用附加包不与任何主机池关联,并且处于非活动状态。
- 新的应用附加包在主机池所在的资源组和位置中创建。
- 原始 MSIX 包仍然处于活动状态,不会禁用或删除。
- 日志信息写入默认文件路径。
将添加到主机池和应用程序组的特定 MSIX 包迁移
下面是将添加到主机池的特定 MSIX 包从 MSIX 应用附加迁移到应用附加的示例。 本示例:
- 将 MSIX 包迁移到与主机池相同的资源组和位置。
- 将应用附加中的 MSIX 包分配到与 RemoteApp 应用程序组源相同的主机池和相同的用户。
- 保留 MSIX 应用附加中现有的 MSIX 包配置主机池上为活动。 如果要立即禁用 MSIX 包,请使用
-DeactivateOrigin
参数。 - 在应用附加中新的 MSIX 包配置设置为非活动。 如果要立即禁用 MSIX 包,请使用
-IsActive
参数。 - 将日志信息写入默认文件路径和格式。
在同一 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
查找要迁移的 MSIX 包,并使用上一输出中
Name
参数的值:$parameters = @{ HostPoolName = '<HostPoolName>' ResourceGroupName = '<ResourceGroupName>' } $msixPackage = Get-AzWvdMsixPackage @parameters | ? Name -Match '<MSIXPackageName>' $hostPoolId = (Get-AzWvdHostPool @parameters).Id
运行以下命令来迁移 MSIX 包:
$parameters = @{ PermissionSource = 'RAG' HostPoolsForNewPackage = $hostPoolId PassThru = $true } $msixPackage | .\Migrate-MsixPackagesToAppAttach.ps1 @parameters
迁移添加到主机池的所有 MSIX 包
下面是将添加到主机池的所有 MSIX 包从 MSIX 应用附加迁移到应用附加的示例。 本示例:
- 将 MSIX 包迁移到同一资源组和位置。
- 将新的应用附加包添加到同一主机池。
- 将所有应用附加包设置为活动。
- 将所有 MSIX 包设置为非活动。
- 从关联的桌面应用程序组复制权限。
- 以 JSON 格式将日志信息写入
C:\MsixToAppAttach.log
的自定义文件路径。
在同一 PowerShell 提示下,通过运行以下命令将所有 MSIX 包添加到主机池,并将它们存储在变量中:
$parameters = @{ HostPoolName = '<HostPoolName>' ResourceGroupName = '<ResourceGroupName>' } $msixPackages = Get-AzWvdMsixPackage @parameters $hostPoolId = (Get-AzWvdHostPool @parameters).Id
运行以下命令来迁移 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