XenApp and XenDesktop

XenApp 6.x 版本的迁移

注意: 您不能将 Citrix Smart Migrate 产品与此版本的 XenApp 和 XenDesktop 结合使用。但是,迁移工具可用。

您可以使用本文中介绍的迁移工具从 XenApp 6.x 迁移到 XenApp 7.6。然后,您可以从 XenApp 7.6 升级到受支持的 LTSR 或当前的 Citrix Virtual Apps and Desktops 版本。

XenApp 6.x 版本迁移工具

XenApp 6.x 迁移工具是 PowerShell 脚本的集合,其中包含用于迁移 XenApp 6.x(6.0 或 6.5)策略和场数据的 cmdlet。在 XenApp 6.x 控制器服务器上,运行导出 cmdlet 以将数据收集到 XML 文件中。然后,从 XenApp 7.6 控制器运行导入 cmdlet,使用导出期间收集的数据创建对象。

以下序列总结了迁移过程。详细信息将在后面提供。

  1. 在 XenApp 6.0 或 6.5 控制器上:
    1. 导入 PowerShell 的导出模块。
    2. 运行导出 cmdlet 以将策略和场数据导出到 XML 文件。
    3. 将 XML 文件(如果选择在导出期间不将图标文件夹嵌入到 XML 文件中,则也复制图标文件夹)复制到 XenApp 7.6 控制器。
  2. 在 XenApp 7.6 控制器上:
    1. 导入 PowerShell 的导入模块。
    2. 运行导入 cmdlet 以导入策略和场数据(应用程序),使用 XML 文件作为输入。
  3. 完成迁移后步骤。

在运行实际迁移之前,您可以导出 XenApp 6.x 设置,然后在 XenApp 7.6 站点上执行预览导入。预览会识别可能的故障点,以便您可以在运行实际导入之前解决问题。例如,预览可能会检测到新 XenApp 7.6 站点中已存在同名应用程序。您还可以使用从预览生成的日志文件作为迁移指南。

除非另有说明,术语 6.x 指的是 XenApp 6.0 或 6.5。

此版本中的新增功能

此 2014 年 12 月版本(版本 20141125)包含以下更新:

  • 如果您在使用 XenApp 6.x 场上的迁移工具时遇到问题,请向 https://discussions.citrix.com/forum/1411-xenapp-7x/ 报告。
  • 新的打包方式 - XAMigration.zip 文件现在包含两个独立的包:ReadIMA.zipImportFMA.zip。要从 XenApp 6.x 服务器导出,您只需 ReadIMA.zip。要导入到 XenApp 7.6 服务器,您只需 ImportFMA.zip
  • Export-XAFarm cmdlet 支持一个新参数 (EmbedIconData),该参数无需将图标数据复制到单独的文件中。
  • Import-XAFarm cmdlet 支持三个新参数:
    • MatchServer - 从名称与表达式匹配的服务器导入应用程序
    • NotMatchServer - 从名称与表达式不匹配的服务器导入应用程序
    • IncludeDisabledApps - 导入已禁用的应用程序
  • 不导入预启动的应用程序。
  • Export-Policy cmdlet 命令可以在 XenDesktop 7.x 版本上正常运行。

迁移工具软件包

迁移工具可在 XenApp 7.6 Citrix 下载站点 下获取。XAMigration.zip 文件包含两个独立的包:

  • ReadIMA.zip - 包含用于从 XenApp 6.x 场导出数据的文件,以及共享模块。
模块或文件 功能描述
ExportPolicy.psm1 用于将 XenApp 6.x 策略导出到 XML 文件的 PowerShell 脚本模块。
ExportXAFarm.psm1 用于将 XenApp 6.x 场设置导出到 XML 文件的 PowerShell 脚本模块。
ExportPolicy.psd1 PowerShell manifest file for script module ExportPolicy.psm1.
ExportXAFarm.psd1 PowerShell manifest file for script module ExportXAFarm.psm1.
日志工具.psm1 包含日志记录功能的共享 PowerShell 脚本模块。
XmlUtilities.psd1 PowerShell manifest file for script module XmlUtilities.psm1.
XmlUtilities.psm1 包含 XML 函数的共享 PowerShell 脚本模块。
  • ImportFMA.zip - 包含用于将数据导入 XenApp 7.6 场的文件以及共享模块。
模块或文件 描述信息
ImportPolicy.psm1 用于将策略导入 XenApp 7.6 的 PowerShell 脚本模块。
ImportXAFarm.psm1 用于将应用程序导入 XenApp 7.6 的 PowerShell 脚本模块。
导入策略.psd1 PowerShell 的清单文件,该文件是用于脚本模块 ImportPolicy.psm1 的定义和配置的。
ImportXAFarm.psd1 PowerShell manifest file for script module ImportXAFarm.psm1.
策略数据.xsd 策略数据的 XML 架构。
XAFarmData.xsd XenApp 场数据的 XML 架构。
LogUtilities.psm1 包含日志记录功能的共享 PowerShell 脚本模块。
XmlUtilities.psd1 PowerShell manifest file for script module XmlUtilities.psm1.
XmlUtilities.psm1 包含 XML 功能的共享 PowerShell 脚本模块。

局限性

  • 并非所有策略设置都已导入。请参阅未导入的策略设置。不支持的设置将被忽略并在日志文件中注明。
  • 虽然在导出操作期间所有应用程序详细信息都收集在输出 XML 文件中,但只有服务器安装的应用程序会导入到 XenApp 7.6 站点。不支持已发布的桌面、内容和大多数流式应用程序(有关例外情况,请参阅分步:导入数据 中的 Import-XAFarm cmdlet 参数)。
  • 应用程序服务器未导入。
  • 由于 XenApp 6.x 独立管理体系结构 (IMA) 和 XenApp 7.6 FlexCast 管理体系结构 (FMA) 技术之间的差异,许多应用程序属性未导入。请参阅应用程序属性映射
  • 导入期间会创建一个交付组。有关使用参数筛选导入内容的详细信息,请参阅高级用法
  • 仅导入使用 AppCenter 管理控制台创建的 Citrix 策略设置。使用 Windows 组策略对象 (GPO) 创建的 Citrix 策略设置未导入。
  • 迁移脚本仅适用于从 XenApp 6.x 到 XenApp 7.6 的迁移。
  • Studio 不支持深度超过五层的嵌套文件夹,并且不会导入这些文件夹。如果您的应用程序文件夹结构包含深度超过五层的文件夹,请考虑在导入之前减少嵌套文件夹的层数。

安全注意事项

导出脚本创建的 XML 文件可能包含有关您的环境和组织的敏感信息,例如用户和服务器名称,以及其他场、应用程序和策略配置数据。请在安全环境中存储和处理这些文件。

在将 XML 文件用作导入策略和应用程序的输入之前,请仔细审查这些文件,以确保它们不包含未经授权的修改。

策略对象分配(以前称为策略筛选器)控制策略的应用方式。导入策略后,请仔细审查每个策略的对象分配,以确保导入后不会出现安全漏洞。导入后,不同的用户集、IP 地址或客户端名称可能会应用于策略。导入后,允许和拒绝设置的含义可能会有所不同。

日志记录和错误处理

这些脚本提供了广泛的日志记录功能,可跟踪所有 cmdlet 执行、信息性消息、cmdlet 执行结果、警告和错误。

  • 大多数 Citrix PowerShell cmdlet 的使用都会被记录。导入脚本中所有创建新站点对象的 PowerShell cmdlet 都会被记录。
  • 脚本执行进度会被记录,包括正在处理的对象。
  • 影响流程状态的主要操作会被记录,包括从命令行定向的流程。
  • 所有打印到控制台的消息都会被记录,包括警告和错误。
  • 每行都精确到毫秒的时间戳。

Citrix 建议在运行每个导出和导入 cmdlet 时指定一个日志文件。

如果您未指定日志文件名,日志文件将存储在当前用户的主文件夹中(在 PowerShell $HOME 变量中指定),如果该文件夹存在的话。否则,文件将放置在脚本的当前执行文件夹中。默认日志名称为 XFarmYYYYMMDDHHmmSS-xxxxxx,其中最后六位数字是随机数。

默认情况下,所有进度信息都会显示。要禁止显示,请在导出和导入 cmdlet 中指定 NoDetails 参数。

通常,当遇到错误时,脚本会停止执行,您可以在清除错误条件后再次运行 cmdlet。

不被视为错误的情况会被记录下来。许多情况会报告为警告,并且脚本会继续执行。例如,不支持的应用程序类型会报告为警告,并且不会导入。已存在于 XenApp 7.6 站点中的应用程序不会导入。在 XenApp 7.6 中已弃用的策略设置不会导入。

迁移脚本使用许多 PowerShell cmdlet,并且可能不会记录所有可能的错误。为了获得更全面的日志记录,请使用 PowerShell 日志记录功能。例如,PowerShell 脚本会记录屏幕上打印的所有内容。有关更多信息,请参阅 Start-TranscriptStop-Transcript cmdlet 的帮助。

先决条件、准备工作和最佳实践

要进行迁移,您必须使用 Citrix XenApp 6.5 SDK。请从 https://www.citrix.com/downloads/xenapp/sdks/powershell-sdk.html 下载该 SDK。

在开始迁移之前,请通读本文。

您需要了解基本的 PowerShell 概念。虽然不需要广泛的脚本编写专业知识,但您需要了解所运行的 cmdlet。在运行每个迁移 cmdlet 之前,请使用 Get-Help cmdlet 查看其帮助。例如:Get-Help -full Import-XAFarm

在命令行上指定一个日志文件,并在运行 cmdlet 后始终查看日志文件。如果脚本失败,请检查并修复日志文件中识别出的错误,然后再次运行 cmdlet。

须知:

  • 为了在两个部署(XenApp 6.x 场和新的 XenApp 7.6 站点)同时运行时方便应用程序交付,您可以在 StoreFront 或 Web Interface 中聚合这两个部署。请参阅您的 StoreFront 或 Web Interface 版本的产品文档(管理 > 创建应用商店)。
  • 应用程序图标数据通过以下两种方式之一处理:
  • 如果您在 Export-XAFarm cmdlet 中指定 EmbedIconData 参数,则导出的应用程序图标数据将嵌入到输出 XML 文件中。
  • 如果您未在 Export-XAFarm cmdlet 中指定 EmbedIconData 参数,则导出的应用程序图标数据将存储在一个文件夹中,该文件夹的名称是通过将字符串 -icons 附加到输出 XML 文件的基本名称而形成的。例如,如果 XmlOutputFile 参数是 FarmData.xml,则会创建文件夹 FarmData-icons 来存储应用程序图标。

    此文件夹中的图标数据文件是 .txt 文件,其名称使用已发布的应用程序的浏览器名称。尽管这些文件是 .txt 文件,但存储的数据是编码的二进制图标数据,导入脚本可以读取这些数据以重新创建应用程序图标。在导入操作期间,如果在与导入 XML 文件相同的位置找不到图标文件夹,则会为每个导入的应用程序使用通用图标。

  • 脚本模块、清单文件、共享模块和 cmdlet 的名称相似。请谨慎使用 Tab 键自动完成功能以避免错误。例如,Export-XAFarm 是一个 cmdlet。ExportXAFarm.psd1ExportXAFarm.psm1 是无法运行的文件。
  • 在分步说明部分中,大多数 <string> 参数值都显示带引号。对于单字字符串,这些是可选的。

从 XenApp 6.x 服务器导出

  • 导出必须在配置了控制器和会话主机(通常称为控制器)服务器模式的 XenApp 6.x 服务器上运行。
  • 要运行导出 cmdlet,您必须是 XenApp® 管理员,并具有读取对象的权限。您还必须具有足够的 Windows 权限才能运行 PowerShell 脚本。分步过程包含说明。
  • 在开始导出之前,请确保 XenApp 6.x 场处于正常状态。备份场数据库。使用 Citrix IMA Helper 实用程序 (CTX133983) 验证场的完整性:从 IMA 数据存储选项卡中,运行主检查(然后使用 DSCheck 选项解决无效条目)。在迁移之前修复问题有助于防止导出失败。

    例如,如果服务器从场中被不当移除,其数据可能仍保留在数据库中;这可能导致导出脚本中的 cmdlet 失败(例如,Get-XAServer -ZoneName)。如果 cmdlet 失败,则脚本也会失败。

  • 您可以在具有活动用户连接的实时场上运行导出 cmdlet。导出脚本仅读取静态场配置和策略数据。

导入到 XenApp 7.6 服务器

  • 您可以将数据导入到 XenApp 7.6 部署(以及更高支持的版本)中。在导入从 XenApp 6.x 场导出的数据之前,您必须安装 XenApp 7.6 Controller 和 Studio,并创建一个站点。尽管导入设置不需要 VDA,但它们允许应用程序文件类型可用。
  • 要运行导入 cmdlet,您必须是 XenApp 管理员,并具有读取和创建对象的权限。完全管理员具有这些权限。您还必须具有足够的 Windows 权限才能运行 PowerShell 脚本。分步过程包含说明。
  • 在导入期间,请勿有任何其他活动用户连接。导入脚本会创建许多新对象,如果其他用户同时更改配置,则可能会发生中断。

请记住,您可以导出数据,然后将 -Preview 参数与导入 cmdlet 结合使用,以查看实际导入期间会发生什么,而无需实际导入任何内容。日志会准确指示实际导入期间会发生什么。如果发生错误,您可以在开始实际导入之前解决它们。

分步说明:导出数据

完成以下步骤以将数据从 XenApp 6.x 控制器导出到 XML 文件。

  1. 从 Citrix 下载站点下载 XAMigration.zip 迁移工具包。为方便起见,请将其放置在 XenApp 6.x 场和 XenApp 7.6 站点均可访问的网络文件共享上。在网络文件共享上解压缩 XAMigration.zip。有两个 zip 文件:ReadIMA.zipImportFMA.zip

  2. 登录到 XenApp 6.x 控制器,作为 XenApp 管理员,至少具有只读权限和运行 PowerShell 脚本的 Windows 权限。

  3. ReadIMA.zip 从网络文件共享复制到 XenApp 6.x 控制器。在控制器上将 ReadIMA.zip 解压缩并提取到一个文件夹(例如:C:\XAMigration)。

  4. 打开 PowerShell 控制台并将当前目录设置为脚本位置(例如:cd C:\XAMigration)。

  5. 通过运行 Get-ExecutionPolicy 检查脚本执行策略。

  6. 将脚本执行策略设置为至少 RemoteSigned 以允许脚本运行(例如:Set-ExecutionPolicy RemoteSigned)。

  7. 导入模块定义文件 ExportPolicy.psd1ExportXAFarm.psd1

    Import-Module .\ExportPolicy.psd1

    Import-Module .\ExportXAFarm.psd1

    须知:

    • 如果您只打算导出策略数据,则可以只导入 ExportPolicy.psd1 模块定义文件。同样,如果您只打算导出场数据,则只导入 ExportXAFarm.psd1
    • 导入模块定义文件还会添加所需的 PowerShell 管理单元。
    • 不要导入 .psm1 脚本文件。
  8. 要导出策略数据,请运行 Export-Policy cmdlet。

    参数名称 详细描述
    -XmlOutputFile “.xml" XML 输出文件名。此文件保存导出的数据。必须具有 .xml 扩展名。文件不得存在,但如果指定了路径,则父路径必须存在。默认值:无。此参数为必填项。
    -日志文件 “" 日志文件名。扩展名是可选的。如果文件不存在,则会创建该文件。如果文件存在且同时指定了 NoClobber 参数,则会生成错误。否则,文件的内容将被覆盖。默认值:请参阅 日志记录和错误处理
    -无日志 不生成日志输出。如果同时指定了 LogFile 参数,此参数将覆盖它。默认值:False。将生成日志输出。
    -不覆盖 不覆盖 LogFile 参数中指定的现有日志文件。如果日志文件不存在,此参数无效。默认值:False。现有日志文件将被覆盖。
    -无详细信息 不向控制台发送有关脚本执行的详细报告。默认值:False。详细报告将发送到控制台。
    -抑制徽标 不将消息 XenApp 6.x to XenApp/XenDesktop 7.6 Migration Tool Version #yyyyMMdd-hhmm# 打印到控制台。此消息标识脚本版本,在故障排除期间可能很有用。因此,Citrix 建议省略此参数。默认值:False。消息将打印到控制台。

    示例:以下 cmdlet 将策略信息导出到名为 MyPolicies.xml 的 XML 文件。操作将记录到名为 MyPolicies.log 的文件。

    Export-Policy -XmlOutputFile ".\MyPolicies.XML" -LogFile ".\MyPolicies.Log"
    <!--NeedCopy-->
    
  9. 要导出场数据,运行 Export-XAFarm cmdlet,并指定日志文件和 XML 文件。

参数名称 描述信息
-XmlOutputFile “.xml" XML 输出文件名。此文件包含导出的数据。必须具有 .xml 扩展名。该文件不得存在,但如果指定了路径,则父路径必须存在。默认值:无。此参数是必需的。
-日志文件 “" 日志文件名。扩展名是可选的。如果文件不存在,则创建该文件。如果文件已存在且同时指定了 NoClobber 参数,则会生成错误。否则,文件内容将被覆盖。默认值:请参阅 日志记录和错误处理
-无日志 不生成日志输出。如果同时指定了此参数,它将覆盖 LogFile 参数。默认值:False。将生成日志输出。
-不覆盖 不要覆盖 LogFile 参数中指定的现有日志文件。如果日志文件不存在,此参数无效。默认值:False。现有日志文件将被覆盖。
-无详细信息 不向控制台发送有关脚本执行的详细报告。默认值:False。详细报告将发送到控制台。
-隐藏徽标 不向控制台打印消息 XenApp 6.x to XenApp/XenDesktop 7.6 Migration Tool Version #yyyyMMdd-hhmm#。此消息用于标识脚本版本,在故障排除期间可能很有用。因此,Citrix 建议省略此参数。默认值:False。消息将打印到控制台。
-忽略管理员 不导出管理员信息。有关如何使用的信息,请参阅 高级用法。默认值:False。管理员信息已导出。
-忽略应用 不导出应用程序信息。有关如何使用的信息,请参阅 高级用法。默认值:False。应用程序信息已导出。
-忽略服务器 不导出服务器信息。默认值:False。将导出服务器信息。
-忽略区域 不导出区域信息。默认值:False。将导出区域信息。
-忽略其他 不导出配置日志记录、负载评估器、负载平衡策略、打印机驱动程序和工作组等信息。默认值:False。将导出其他信息。注意:当发生不会影响用于导出或导入过程的实际数据时,此开关允许您继续导出。
-应用限制 要导出的应用程序数量。有关如何使用的信息,请参阅 高级用法。默认值:导出所有应用程序。
-嵌入图标数据 将应用程序图标数据嵌入到与其他对象相同的 XML 文件中。默认值:图标单独存储。有关详细信息,请参阅 要求、准备和最佳实践
-跳过应用 要跳过的应用程序数量。有关如何使用的信息,请参阅 高级用法。默认值:不跳过任何应用程序。
Example: The following cmdlet exports farm information to the XML file named MyFarm.xml. The operation is logged to the file MyFarm.log. A folder named "MyFarm-icons" is created to store the application icon data files. This folder is at the same location as MyFarm.XML.

`Export-XAFarm -XmlOutputFile ".\MyFarm.XML" -LogFile ".\MyFarm.Log"`

导出脚本完成后,命令行中指定的 XML 文件将包含策略和 XenApp 场数据。应用程序图标文件包含图标数据文件,日志文件指示导出期间发生的情况。

分步:导入数据

请记住,您可以运行预览导入(通过使用 Preview 参数运行 Import-PolicyImport-XAFarm cmdlet)。然后,您可以在执行实际导入之前查看日志文件。

完成以下步骤,使用从导出生成的 XML 文件将数据导入 XenApp 7.6 站点。

  1. 以具有读写权限和运行 PowerShell 脚本的 Windows 权限的管理员身份登录 XenApp 7.6 Controller。

  2. 如果尚未在网络文件共享上解压缩迁移工具包 XAMigration,请立即执行此操作。将 ImportFMA.zip 从网络文件共享复制到 XenApp 7.6 Controller。在 Controller 上将 ImportFMA.zip 解压缩并提取到一个文件夹(例如 C:\XAMigration)。

  3. 将 XML 文件(导出期间生成的输出文件)从 XenApp 6.x Controller 复制到 XenApp 7.6 Controller 上您已将 ImportFMA.zip 文件解压缩到的同一位置。

    如果您在运行 Export-XAFarm 时选择不将应用程序图标数据嵌入 XML 输出文件,请将图标数据文件夹和文件复制到 XenApp 7.6 Controller 上的同一位置,该位置与包含应用程序数据和已解压缩的 ImportFMA.zip 文件的输出 XML 文件所在位置相同。

  4. 打开 PowerShell 控制台并将当前目录设置为脚本位置(例如:cd C:\XAMigration)。

  5. 通过运行 Get-ExecutionPolicy 检查脚本执行策略。

  6. 将脚本执行策略设置为至少 RemoteSigned 以允许运行脚本(例如:Set-ExecutionPolicy RemoteSigned)。

  7. 导入 PowerShell 模块定义文件 ImportPolicy.psd1ImportXAFarm.psd1

    Import-Module .\ImportPolicy.psd1

    Import-Module .\ImportXAFarm.psd1

    值得注意:

    • 如果您只打算导入策略数据,则可以只导入 ImportPolicy.psd1 模块定义文件。同样,如果您只打算导入场数据,则只导入 ImportXAFarm.psd1
    • 导入模块定义文件还会添加所需的 PowerShell 管理单元。
    • 不要导入 .psm1 脚本文件。
  8. 要导入策略数据,请运行 Import-Policy cmdlet,并指定包含导出的策略数据的 XML 文件。

    参数名称 描述说明
    -XmlInputFile “.xml" XML 输入文件名。此文件包含从运行 Export-Policy cmdlet 收集的数据。必须具有 .xml 扩展名。默认值:无。此参数为必填项。
    -XsdFile “" XSD 文件名。导入脚本使用此文件验证 XML 输入文件的语法。有关使用方法的信息,请参阅 高级用法。默认值:PolicyData.XSD
    -日志文件 “" 日志文件名。如果已将导出日志文件复制到此服务器,请考虑将不同的日志文件名与导入 cmdlet 配合使用。默认值:请参阅 日志记录和错误处理
    -无日志 不生成日志输出。如果同时指定了 LogFile 参数,此参数将覆盖它。默认值:False。将生成日志输出。
    -禁止覆盖 不覆盖 LogFile 参数中指定的现有日志文件。如果日志文件不存在,此参数无效。默认值:False。现有日志文件将被覆盖。
    -不显示详细信息 不向控制台发送有关脚本执行的详细报告。默认值:False。详细报告将发送到控制台。
    -隐藏徽标 不向控制台打印消息 XenApp 6.x to XenApp/XenDesktop 7.6 Migration Tool Version #yyyyMMdd-hhmm#。此消息用于标识脚本版本,在故障排除期间可能很有用。因此,Citrix 建议省略此参数。默认值:False。消息将打印到控制台。
    -预览 执行预览导入:从 XML 输入文件读取数据,但不将对象导入到站点。日志文件和控制台会指示预览导入期间发生的情况。预览会向管理员显示实际导入期间会发生什么。默认值:False。将进行实际导入。

    示例:以下 cmdlet 从名为 MyPolcies.xml 的 XML 文件导入策略数据。该操作将记录到名为 MyPolicies.log 的文件中。

    Import-Policy -XmlInputFile ".\MyPolicies.XML"
    -LogFile ".\MyPolicies.Log"
    <!--NeedCopy-->
    
  9. 要导入应用程序,请运行 Import-XAFarm cmdlet,并指定日志文件和包含导出的场数据的 XML 文件。

    参数名 说明内容
    -XmlInputFile “.xml" XML 输入文件名。此文件包含通过运行 Export-XAFarm cmdlet 收集的数据。必须具有 .xml 扩展名。默认值:无。此参数为必填项。
    -XsdFile “" XSD 文件名。导入脚本使用此文件验证 XML 输入文件的语法。有关如何使用的信息,请参阅 高级用法。默认值:XAFarmData.XSD
    -日志文件 “" 日志文件名。如果您已将导出日志文件复制到此服务器,请考虑在导入 cmdlet 中使用不同的日志文件名。默认值:请参阅 日志记录和错误处理
    -无日志 不生成日志输出。如果同时指定了 LogFile 参数,此参数将覆盖它。默认值:False。将生成日志输出。
    -不覆盖 不覆盖 LogFile 参数中指定的现有日志文件。如果日志文件不存在,此参数无效。默认值:False。现有日志文件将被覆盖。
    -无详细信息 不向控制台发送有关脚本执行的详细报告。默认值:False。详细报告将发送到控制台。
    -隐藏徽标 不向控制台打印消息 XenApp 6.x to XenApp/XenDesktop 7.6 Migration Tool Version #yyyyMMdd-hhmm#。此消息用于标识脚本版本,在故障排除期间可能很有用。因此,Citrix 建议省略此参数。默认值:False。消息将打印到控制台。
    -预览 执行预览导入:从 XML 输入文件读取数据,但不将对象导入站点。日志文件和控制台会指示预览导入期间发生的情况。预览会向管理员显示实际导入期间会发生什么。默认值:False。将执行实际导入。
    -交付组名称 “" 所有导入应用程序的交付组名称。有关使用方法信息,请参阅 高级用法。默认值:” -Delivery Group”
    -匹配文件夹 “" 仅导入文件夹名称与字符串匹配的应用程序。有关使用方法信息,请参阅 高级用法。默认值:不进行匹配。
    -不匹配文件夹 “" 仅导入名称与字符串不匹配的文件夹中的应用程序。有关如何使用的信息,请参阅高级用法。默认值:不进行匹配。
    -匹配服务器 “" 仅导入名称与字符串匹配的服务器中的应用程序。有关如何使用的信息,请参阅高级用法
    -不匹配服务器 “" 仅导入名称与字符串不匹配的服务器中的应用程序。有关如何使用的信息,请参阅高级用法。默认值:不进行匹配。
    -匹配工作组 “" 仅导入发布到名称与字符串匹配的工作组的应用程序。有关如何使用的信息,请参阅高级用法。默认值:不进行匹配。
    -不匹配工作组 “" 仅导入发布到名称与字符串不匹配的工作组的应用程序。有关如何使用的信息,请参阅高级用法。默认值:不进行匹配。
    -匹配账户 “" 仅导入发布到名称与字符串匹配的用户帐户的应用程序。有关如何使用的信息,请参阅高级用法。默认值:不进行匹配。
    -不匹配账户 “" 仅导入发布到名称与字符串不匹配的用户帐户的应用程序。有关如何使用的信息,请参阅高级用法。默认值:不进行匹配。
    -包含流式应用程序 导入 StreamedToClientOrServerInstalled 类型的应用程序。(不导入其他流式应用程序。)默认值:不导入流式应用程序。
    -包含禁用应用程序 导入已标记为禁用的应用程序。默认值:不导入禁用的应用程序。

    示例:以下 cmdlet 从名为 MyFarm.xml 的 XML 文件导入应用程序。操作将记录到名为 MyFarm.log 的文件中。

    Import-XAFarm -XmlInputFile ".\MyFarm.XML"
    -LogFile ".\MyFarm.Log"
    
    <!--NeedCopy-->
    
  10. 在导入成功完成之后,请完成迁移后的各项任务。

迁移后任务

成功将 XenApp 6.x 策略和场设置导入 XenApp 7.6 站点后,请使用以下指南确保数据已正确导入。

策略和策略设置

导入策略本质上是一个复制操作,但已弃用的设置和策略除外,这些设置和策略不会被导入。迁移后检查主要涉及比较两端。

  1. 日志文件列出了所有已导入和已忽略的策略和设置。首先,查看日志文件并确定哪些设置和策略未导入。

  2. 将 XenApp 6.x 策略与导入到 XenApp 7.6 的策略进行比较。保持设置值相同(已弃用的策略设置除外,如下一步所述)。

    • 如果策略数量不多,可以对 XenApp 6.x AppCenter 中显示的策略和 XenApp 7.6 Studio 中显示的策略进行并排目视比较。
    • 如果策略数量很多,目视比较可能不可行。在这种情况下,请使用策略导出 cmdlet (Export-Policy) 将 XenApp 7.6 策略导出到不同的 XML 文件,然后使用文本差异工具(例如 windiff)将该文件的数据与从 XenApp 6.x 导出策略期间使用的 XML 文件中的数据进行比较。
  3. 使用 未导入的策略设置 部分中的信息来确定导入期间可能发生了哪些更改。如果 XenApp 6.x 策略作为一个整体策略仅包含已弃用的设置,则不会导入该策略。例如,如果 XenApp 6.x 策略仅包含 HMR 测试设置,则会忽略该策略,因为 XenApp 7.6 中不支持等效设置。

    某些 XenApp 6.x 策略设置不再受支持,但等效功能已在 XenApp 7.6 中实现。例如,在 XenApp 7.6 中,您可以通过编辑交付组来配置服务器操作系统计算机的重新启动计划。此功能以前是通过策略设置实现的。

  4. 审查并确认筛选器如何应用于您的 XenApp 7.6 站点,以及它们在 XenApp 6.x 中的使用方式。XenApp 6.x 场与 XenApp 7.6 站点之间的显著差异可能会改变筛选器的效果。

筛选器

仔细检查每个策略的筛选器。可能需要进行更改,以确保它们在 XenApp 7.6 中仍能按 XenApp 6.x 中的预期工作。

筛选器 注意事项
访问控制 通常,访问控制包含与原始 XenApp 6.x 筛选器相同的值,并且无需更改即可工作。
思杰云桥® 一个简单的布尔值。通常无需更改即可工作。(此产品现称为 NetScaler SD-WAN。)
客户端 IP 地址 列出客户端 IP 地址范围。每个范围都被允许或拒绝。导入脚本会保留这些值,但如果不同的客户端连接到 XenApp 7.6 VDA 计算机,则可能需要进行更改。
客户端名称 与客户端 IP 地址筛选器类似,导入脚本会保留这些值,但如果不同的客户端连接到 XenApp 7.6 VDA 计算机,则可能需要进行更改。
组织机构单位 值可能会被保留,具体取决于导入时是否可以解析组织单位 (OU)。仔细检查此筛选器,特别是当 XenApp 6.x 和 XenApp 7.6 计算机位于不同域中时。如果未正确配置筛选器值,则策略可能会应用于不正确的组织单位集。组织单位仅由名称表示,因此组织单位名称解析为包含与 XenApp 6.x 域中组织单位不同成员的组织单位的可能性很小。即使组织单位筛选器的一些值被保留,也要仔细检查这些值。
用户或组 值可能会保留,具体取决于导入时是否可以解析帐户。与 OU 类似,帐户仅使用名称解析,因此如果 XenApp 7.6 站点具有相同域和用户名的域,但实际上是两个不同的域和用户,则解析的帐户可能与 XenApp 6.x 域用户不同。如果您未正确审查和修改筛选器值,则可能会发生不正确的策略应用。
工作程序组 XenApp 7.6 不支持工作程序组。请考虑使用 XenApp 7.6 中支持的交付组、交付组类型和标记筛选器(XenApp 6.x 中不支持)。交付组:允许根据交付组应用策略。每个筛选器条目指定一个交付组,并且可以允许或拒绝。交付组类型:允许根据交付组类型应用策略。每个筛选器指定一个可以允许或拒绝的交付组类型。标记:根据为 VDA 计算机创建的标记指定策略应用。每个标记都可以允许或拒绝。

总结一下,如果 XenApp 6.x 场和 XenApp 7.6 站点位于不同的域中,则涉及域用户更改的筛选器需要特别注意。由于导入脚本仅使用域和用户名的字符串来解析新域中的用户,因此可能只有部分帐户能够解析。尽管不同域和用户具有相同名称的可能性很小,但请仔细审查这些筛选器以确保它们包含正确的值。

应用程序

应用程序导入脚本不仅仅导入应用程序。它们还会创建交付组等对象。如果应用程序导入涉及多次迭代,则原始应用程序文件夹层次结构可能会发生显著变化。

  1. 首先,阅读迁移日志文件,其中包含有关导入了哪些应用程序、忽略了哪些应用程序以及用于创建应用程序的 cmdlet 的详细信息。
  2. 对于每个应用程序:
    • 目视检查以确保在导入过程中保留了基本属性。使用 应用程序属性映射 部分中的信息来确定哪些属性是未更改导入的、未导入的,或者使用 XenApp 6.x 应用程序数据初始化的。
    • 检查用户列表。导入脚本会自动将显式用户列表导入到 XenApp 7.6 中应用程序的限制可见性列表中。检查以确保列表保持不变。
  3. 应用程序服务器未导入。这意味着尚无法访问任何导入的应用程序。包含这些应用程序的交付组必须分配包含具有已发布应用程序可执行映像的计算机的计算机目录。对于每个应用程序:
    • 确保可执行文件名称和工作目录指向交付组(通过计算机目录)中分配的计算机中存在的某个可执行文件。
    • 检查命令行参数(可以是任何内容,例如文件名、环境变量或可执行文件名称)。验证该参数对分配给交付组的计算机目录中的所有计算机都有效。

日志文件

日志文件是导入和导出最重要的参考资源。因此,默认情况下不会覆盖现有日志文件,并且默认日志文件名是唯一的。

正如 (#logging-and-error-handling) 中所述,如果您使用 PowerShell Start-TranscriptStop-Transcript cmdlet(它们记录所有键入和打印到控制台的内容)进行额外的日志记录覆盖,则该输出与日志文件一起,提供了导入和导出活动的完整参考。

使用日志文件中的时间戳,您可以诊断某些问题。例如,如果导出或导入运行了很长时间,您可以确定是错误的数据库连接还是解析用户帐户占用了大部分时间。

日志文件中记录的命令还会告诉您某些对象是如何读取或创建的。例如,要创建交付组,多个命令不仅会创建交付组对象,还会创建其他对象,例如允许将应用程序对象分配给交付组的访问策略规则。

日志文件还可用于诊断失败的导出或导入。通常,日志文件的最后几行会指示导致失败的原因。失败错误消息也保存在日志文件中。日志文件与 XML 文件一起,可用于确定哪个对象涉及了失败。

审查并测试迁移后,您可以:

  1. 通过在服务器上运行 7.6 安装程序,将 XenApp 6.5 工作服务器升级到当前的虚拟投递代理 (VDA),该安装程序会删除 XenApp 6.5 软件,然后自动安装当前的 VDA。有关说明,请参阅 (/zh-cn/xenapp-and-xendesktop/7-15-ltsr/upgrade-migrate/upgrade/upgrade-xenapp-6-5-to-vda.html)。

    对于 XenApp 6.0 工作服务器,您必须从服务器手动卸载 XenApp 6.0 软件。然后,您可以使用 7.6 安装程序安装当前的 VDA。您不能使用 7.6 安装程序自动删除 XenApp 6.0 软件。

  2. 在新的 XenApp 站点中的 Studio 中,为升级后的工作程序创建计算机目录(或编辑现有目录)。

  3. 将计算机目录中升级后的计算机添加到包含安装在那些适用于 Windows Server OS 的 VDA 上的应用程序的交付组。

高级用法

默认情况下,Export-Policy cmdlet 将所有策略数据导出到 XML 文件。同样,Export-XAFarm 将所有场数据导出到 XML 文件。您可以使用命令行参数更精细地控制导出和导入的内容。

部分导出应用程序

如果您有许多应用程序并希望控制导出到 XML 文件的数量,请使用以下参数:

  • AppLimit - 指定要导出的应用程序数量。
  • SkipApps - 指定在导出后续应用程序之前要跳过的应用程序数量。

您可以使用这两个参数以可管理的分块导出大量应用程序。例如,首次运行 Export-XAFarm 时,您只想导出前 200 个应用程序,因此您在 AppLimit 参数中指定该值。

Export-XAFarm -XmlOutputFile "Apps1-200.xml"
-AppLimit "200"
<!--NeedCopy-->

下次运行 Export-XAFarm 时,您想导出接下来的 100 个应用程序。因此,您使用 SkipApps 参数忽略已导出的应用程序(前 200 个),并使用 AppLimit 参数导出接下来的 100 个应用程序。

Export-XAFarm -XmlOutputFile "Apps201-300.xml"
-AppLimit "100" -SkipApps "200"
<!--NeedCopy-->

请勿导出某些特定的对象

某些对象可以忽略,因此无需导出,特别是那些未导入的对象。请参阅 未导入的策略设置应用程序属性映射。使用以下参数可防止导出不需要的对象:

  • IgnoreAdmins - 不导出管理员对象
  • IgnoreServers - 不导出服务器对象
  • IgnoreZones - 不导出区域对象
  • IgnoreOthers - 不导出配置日志记录、负载评估器、负载平衡策略、打印机驱动程序和工作组对象
  • IgnoreApps - 不导出应用程序。此参数允许您将其他数据导出到 XML 输出文件,然后再次运行导出以将应用程序导出到不同的 XML 输出文件。

您还可以使用这些参数来解决可能导致导出失败的问题。例如,如果某个区域中存在故障服务器,则区域导出可能会失败。如果您包含 IgnoreZones 参数,导出将继续处理其他对象。

交付组名称

如果您不想将所有应用程序放入一个交付组(例如,因为它们由不同的用户集访问并发布到不同的服务器集),您可以多次运行 Import-XAFarm,每次指定不同的应用程序和不同的交付组。尽管您可以在迁移后使用 PowerShell cmdlet 将应用程序从一个交付组移动到另一个交付组,但有选择地导入到唯一的交付组可以减少或消除以后移动应用程序的工作量。

  • DeliveryGroupName 参数与 Import-XAFarm cmdlet 结合使用。如果指定的交付组不存在,脚本会创建它。
  • 使用以下参数和正则表达式,根据文件夹、工作组、用户帐户和服务器名称筛选要导入到交付组的应用程序。建议将正则表达式用单引号或双引号括起来。有关正则表达式的信息,请参阅 https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/regular-expressions

    • MatchWorkerGroupNotMatchWorkerGroup - 例如,对于发布到工作组的应用程序,以下 cmdlet 将名为 Productivity Apps 的工作组中的应用程序导入到同名的 XenApp 7.6 交付组中:

       Import-XAFarm –XmlInputFile XAFarm.xml –LogFile XAFarmImport.log –MatchWorkerGroup ‘Productivity Apps’ –DeliveryGroupName ‘Productivity Apps
       <!--NeedCopy-->
      
    • MatchFolderNotMatchFolder - 例如,对于组织在应用程序文件夹中的应用程序,以下 cmdlet 将名为 Productivity Apps 的文件夹中的应用程序导入到同名的 XenApp 7.6 交付组中。

       Import-XAFarm –XmlInputFile XAFarm.xml –LogFile XAFarmImport.log –MatchFolder ‘Productivity Apps’ –DeliveryGroupName ‘Productivity Apps’
       <!--NeedCopy-->
      

      例如,以下 cmdlet 将名称包含 MS Office Apps 的任何文件夹中的应用程序导入到默认交付组。

       Import-XAFarm -XmlInputFile .\THeFarmApps.XML -MatchFolder ".*/MS Office Apps/.*"
       <!--NeedCopy-->
      
    • MatchAccountNotMatchAccount - 例如,对于发布到 Active Directory 用户或用户组的应用程序,以下 cmdlet 将发布到名为 Finance Group 的用户组的应用程序导入到名为 Finance. 的 XenApp 7.6 交付组中。

       Import-XAFarm –XmlInputFile XAFarm.xml –LogFile XAFarmImport.log –MatchAccount ‘DOMAIN\\Finance Group’ –DeliveryGroupName ‘Finance’
       <!--NeedCopy-->
      
    • MatchServerNotMatchServer - 例如,对于在服务器上组织的应用程序,以下 cmdlet 将与未命名为 Current 的服务器关联的应用程序导入到名为 Legacy. 的交付组中。

       Import-XAFarm -XmlInputFile XAFarm.xml -LogFile XAFarmImport.log -NotMatchServer 'Current' -DeliveryGroupName 'Legacy'
       <!--NeedCopy-->
      

自定义设置

PowerShell 程序员可以创建自己的工具。例如,您可以使用导出脚本作为清单工具来跟踪 XenApp 6.x 场的更改。您还可以修改 XSD 文件或(创建自己的 XSD 文件)以在 XML 文件中存储额外数据或不同格式的数据。您可以为每个导入 cmdlet 指定一个非默认 XSD 文件。

尽管您可以修改脚本文件以满足特定或高级的迁移要求,但支持仅限于未修改状态的脚本。Citrix 技术支持建议恢复到未修改的脚本以确定预期行为并在必要时提供支持。

故障排除

  • 如果您使用的是 PowerShell 2.0 版,并且使用 Add-PSSnapIn cmdlet 添加了 Citrix 组策略 PowerShell 提供程序管理单元或 Citrix 常用命令管理单元,则在运行导出或导入 cmdlet 时可能会看到错误消息 Object reference not set to an instance of an object。此错误不影响脚本执行,可以安全忽略。
  • 避免在导出和导入脚本模块使用的同一控制台会话中添加或删除 Citrix 组策略 PowerShell 提供程序管理单元,因为这些脚本模块会自动添加该管理单元。如果您单独添加或删除该管理单元,可能会看到以下错误之一:

    • A drive with the name 'LocalGpo' already exists. 当管理单元被添加两次时会出现此错误。管理单元在加载时尝试挂载驱动器 LocalGpo,然后报告此错误。
    • A parameter cannot be found that matches parameter name 'Controller'. 当管理单元尚未添加但脚本尝试挂载驱动器时会出现此错误。脚本不知道管理单元已被删除。关闭控制台并启动新会话。在新会话中,导入脚本模块。请勿单独添加或删除管理单元。
  • 导入模块时,如果右键单击 .psd1 文件并选择“打开”或“使用 PowerShell 打开”,PowerShell 控制台窗口将快速打开和关闭,直到您停止该过程。为避免此错误,请直接在 PowerShell 控制台窗口中输入完整的 PowerShell 脚本模块名称(例如,Import-Module .\ExportPolicy.psd1)。
  • 如果在运行导出或导入时收到权限错误,请确保您是 XenApp 管理员,并具有读取对象(用于导出)或读取和创建对象(用于导入)的权限。您还必须具有足够的 Windows 权限才能运行 PowerShell 脚本。
  • 如果导出失败,请通过在 XenApp 6.x 控制器服务器上运行 DSMAINT 和 DSCHECK 实用程序,检查 XenApp 6.x 场是否处于正常运行状态。
  • 如果您运行了预览导入,然后又为实际迁移再次运行了导入 cmdlet,但发现没有任何内容被导入,请验证您是否已从导入 cmdlet 中删除了 Preview 参数。

未导入的策略设置

以下计算机和用户策略设置将不会被导入,因为它们已不再受支持。未经过滤的策略也永远不会被导入。支持这些设置的功能和组件,要么已被新的技术和组件所取代,要么这些设置本身由于架构和平台的变化而不再适用。

未导入的计算机策略设置

  • 对连接的访问控制
  • CPU 管理服务器级别
  • DNS 地址解析
  • 场名称
  • 完整图标缓存
  • 运行状况监视、运行状况监视测试
  • 许可证服务器主机名、许可证服务器端口
  • 限制用户会话、限制管理员会话
  • 负载评估器名称
  • 登录限制事件日志记录
  • 具有登录控制的服务器的最大百分比
  • 内存优化、内存优化应用程序排除列表、内存优化间隔、内存优化计划:月份中的日期、内存优化计划:星期几、内存优化计划:时间
  • 离线应用程序客户端信任、离线应用程序事件日志记录、离线应用程序许可证期限、离线应用程序用户
  • 提示输入密码
  • 重启自定义警告、重启自定义警告文本、重启登录禁用时间、重启计划频率、重启计划随机化间隔、重启计划开始日期、重启计划时间、重启警告间隔、重启警告开始时间、重启警告用户、计划重启
  • 影子会话 *
  • 对 XML 请求的信任(在 StoreFront™ 中配置)
  • 虚拟 IP 适配器地址筛选、虚拟 IP 兼容程序列表、虚拟 IP 增强兼容性、虚拟 IP 筛选适配器地址程序列表
  • 工作负载名称
  • XenApp 产品版本、XenApp 产品型号
  • XML 服务端口

* 已替换为 Windows 远程协助

未导入的用户策略设置

  • 自动连接客户端 COM 端口、自动连接客户端 LPT 端口
  • 客户端 COM 端口重定向、客户端 LPT 端口重定向
  • 客户端打印机名称
  • 并发登录限制
  • 影子连接的输入 *
  • 延迟断开计时器间隔,延迟终止计时器间隔
  • 记录影子尝试 *
  • 通知用户有待处理的影子连接 *
  • 预启动断开计时器间隔,预启动终止计时器间隔
  • 会话重要性
  • 单点登录,单点登录中央存储
  • 可以影子其他用户的用户,不能影子其他用户的用户 *

* 已替换为 Windows 远程协助

未导入的应用程序类型

以下应用程序类型将不会被导入。

  • 服务器桌面
  • 内容
  • 流式应用程序(App-V 是用于流式传输应用程序的新方法)

应用程序属性映射

场数据导入脚本仅导入应用程序。以下应用程序属性将不作任何更改地导入。

IMA 属性 FMA 属性
添加到客户端桌面 已添加到桌面的快捷方式
添加到客户端开始菜单 已添加到开始菜单的快捷方式
客户端文件夹 客户端文件夹
命令行可执行文件 命令行可执行文件
CPU 优先级 CPU 优先级
详细说明 详细说明
显示名称 已发布名称
已启用 已启用
开始菜单文件夹 开始菜单文件夹
等待打印机创建 等待打印机创建
工作目录 工作目录
文件夹路径 管理员文件夹名称

IMA 和 FMA 对文件夹名称长度有不同的限制。在 IMA 中,文件夹名称限制为 256 个字符。FMA 的限制为 64 个字符。导入时,如果应用程序的文件夹路径中包含的文件夹名称超过 64 个字符,则会跳过该应用程序。此限制仅适用于文件夹路径中的文件夹名称。整个文件夹路径可以长于所提及的限制。为避免在导入过程中跳过应用程序,Citrix 建议在导出之前检查应用程序文件夹名称的长度,并在需要时缩短它。

以下应用程序属性默认初始化或未初始化,或者设置为 XenApp 6.x 数据中提供的值:

FMA 属性
名称 初始化为完整路径名,其中包含 IMA 属性 FolderPath 和 DisplayName,但去除了前导字符串 “Applications\”
应用程序类型 在桌面上托管
命令行参数 使用 XenApp 6.x 命令行参数进行初始化
客户端图标 未初始化;默认为 false
图标 UID 使用 XenApp 6.x 图标数据创建的图标对象进行初始化
启用安全命令行参数 未初始化;默认为 true
用户筛选器已启用 未初始化;默认为 false
通用唯一标识符 只读属性,由控制器进行分配
可见 未初始化;默认为 true

以下应用程序属性已得到部分迁移:

IMA 属性 备注
文件类型 仅迁移新 XenApp 站点上存在的文件类型。新站点上不存在的文件类型将被忽略。文件类型仅在新站点上的文件类型更新后导入。
图标数据 如果已为导出的应用程序提供了图标数据,则会创建新的图标对象。
帐户 应用程序的用户帐户在交付组的用户列表和应用程序之间进行拆分。显式用户用于初始化应用程序的用户列表。此外,用户帐户域的“域用户”帐户将添加到交付组的用户列表。

以下 XenApp 6.x 属性未导入:

IMA 属性 注释
应用程序类型 已忽略。
禁用时隐藏 已忽略。
访问会话条件 已由交付组访问策略取代。
访问会话条件已启用 已由交付组访问策略取代。
允许通过访问网关连接 已由交付组访问策略取代。
允许其他连接 已由交付组访问策略取代。
备用配置文件 FMA 不支持流式应用程序。
允许脱机访问 FMA 不支持流式应用程序。
配置文件位置 FMA 不支持流式应用程序。
配置文件程序参数 FMA 不支持流式应用程序。
配置文件程序名称 FMA 不支持流式应用程序。
以最低权限用户运行 FMA 不支持流式应用程序。
匿名连接已允许 FMA 使用不同的技术来支持未经身份验证(匿名)的连接。
应用程序 ID, 序列号 IMA 独有数据。
音频类型 FMA 不支持高级客户端连接选项。
加密级别 SecureICA 在交付组中启用/禁用。
是否需要加密 SecureICA 在交付组中启用/禁用。
启用Ssl连接 FMA 使用不同的 TLS 实现。
内容地址 FMA 不支持已发布内容。
颜色深度 FMA 不支持高级窗口外观。
启动时最大化 FMA 不支持高级窗口外观。
标题栏隐藏 FMA 不支持高级窗口外观。
窗口类型 FMA 不支持高级窗口外观。
实例限制 FMA 不支持应用程序限制。
允许每个用户有多个实例 FMA 不支持应用程序限制。
启用负载均衡应用程序检查 FMA 使用不同的技术来支持负载平衡。
预启动 FMA 使用不同的技术来支持会话预启动。
缓存选项 FMA 使用不同的技术来支持会话预启动。
服务器名称 FMA 使用不同的技术。
工作组名称 FMA 不支持工作组。
XenApp 6.x 版本的迁移