Citrix Virtual Apps and Desktops

将配置迁移到 Citrix Cloud™

Automated Configuration Tool (ACT) 允许将 Citrix Virtual Apps and Desktops™ 配置(策略、应用程序、目录、管理员角色、范围及其他)从一个或多个本地站点迁移到 Citrix Cloud 上托管的 Citrix DaaS。它还可用于在不同的云区域或租户之间迁移信息。

此工具可发现并导出一个或多个本地站点,将其作为配置文件的集合,您可以选择编辑这些文件。然后,这些文件的配置可以导入到 Citrix DaaS 中。

  • 迁移通过多次运行该工具分阶段完成,使您能够轻松实现所需的配置状态。

  • ACT 不仅仅是一个一次性迁移工具。您可以使用它来管理日常云操作,例如:

  • 自动将配置从测试或暂存云帐户传输到生产云帐户
  • 备份和还原配置
  • 将一个云环境拆分为多个云

  • 以下 2 分钟视频提供了 Automated Configuration 的快速导览。

迁移配置的必备条件

要从 Citrix Virtual Apps™ and Desktops 导出配置,您需要:

  • Citrix Virtual Apps and Desktops:当前版本及其直接前身,或 Citrix Virtual Apps and Desktops、XenApp and XenDesktop® LTSR:所有版本
  • 一台已加入域的计算机,其中安装了 .NET Framework 4.7.2 或更高版本以及 Citrix PowerShell SDK。此 SDK 会自动安装在 Delivery Controller 上。(要在本地 Delivery Controller 以外的计算机上运行,必须安装 Citrix Studio,因为 Studio 会安装正确的 PowerShell 管理单元。Studio 安装程序可在 Citrix Virtual Apps and Desktops 安装介质中找到。)

要将配置 导入到 Citrix DaaS 中,您需要:

  • 一台可访问 Citrix Cloud 的计算机。这不必是 Delivery Controller™ 或已加入域的计算机。
  • 已预配 Citrix DaaS。
  • 一个已安装 Connector 且已加入与本地设置相同域的活动资源位置。
  • 必须允许并提供对访问 Citrix Cloud 的站点的连接。有关详细信息,请参阅系统和连接要求

注意:

Automated Configuration 无法安装在 Cloud Connector 系统上。

主要步骤

  1. 下载 Automated Configuration Tool 并查看系统要求。请参阅下载 Automated Configuration
  2. 使用从 Citrix Cloud 门户生成的 CustomerNameCustomerIDSecretKey 值填充 CustomerInfo.yml 文件。请参阅生成客户 ID、客户端 ID 和密钥填充客户信息文件
  3. 如果本地站点包含多个区域,请更新 ZoneMapping.yml 文件以将区域映射到 Citrix DaaS 资源位置。请参阅填充区域映射文件
  4. 如果站点包含多个托管连接,请使用每个主机类型迁移到 Citrix DaaS 的连接信息更新 CvadAcSecurity.yml 文件。如果只有一个主机连接,请使用该主机连接的连接信息更新 CvadACSecurity.yml 文件。请参阅更新主机连接的安全文件
  5. 打开 ACT 并使用 Export-CvadAcToFile 命令导出本地站点。有关支持迁移的组件列表,请参阅支持的迁移对象。有关导出步骤的信息,请参阅导出本地配置
  6. 使用 Merge-CvadAcToSite 命令分阶段导入组件。或者,一次性迁移整个站点。请确保按照组件迁移顺序中列出的顺序迁移组件。有关导入步骤的信息,请参阅运行导入
  7. 激活云站点。请参阅激活站点

下载 Automated Configuration

Citrix 下载下载并安装 Automated Configuration 工具。

升级 Automated Configuration

为防止功能错误,请始终使用最新可用版本的 ACT。

要了解您的工具版本,请执行以下操作:

  1. 双击 Auto Config 图标。此时将显示一个 PowerShell 窗口。
  2. 运行以下命令以检查您的版本号。

    Get-CvadAcStatus
    <!--NeedCopy-->
    
      1. 将您的工具版本与 Citrix 下载中列出的版本进行比较。最新版本的工具位于此处。
      1. 下载并安装最新版本的工具。您 无需 卸载旧版本即可升级 Automated Configuration。

注意:

当您在 Automated Configuration 中运行 cmdlet 以访问云时,如果有可供下载的新版本,该工具会提醒您。有关 cmdlet 的更多信息,请参阅 Automated Configuration 工具 cmdlet

生成客户 ID、客户端 ID 和密钥

要将本地站点迁移到 Citrix DaaS,请使用从 Citrix Cloud 门户获取的客户 ID、客户端 ID 和密钥填写 CustomerInfo.yml 文件。

检索客户 ID:

  1. 登录您的 Citrix Cloud 帐户并选择客户。
  2. 单击网格图标并选择身份和访问管理
  3. 导航到 API 访问 > 安全客户端。客户 ID 将显示在该页面上。

检索客户端 ID 和密钥:

  1. 安全客户端页面上,在框中输入一个名称。此名称用于区分多个客户端 ID 和密钥。
  2. 单击“创建客户端”以创建客户端 ID 和密钥。
  3. 将客户端 ID 和密钥复制到安全位置,并下载包含此信息的 .csv 文件。使用 .csv 文件填充 CustomerInfo.yml 文件。

注意:

  • 客户端 ID 和密钥不会过期。如果它们遭到泄露,请立即使用垃圾桶图标将其删除并创建新的。
    • 如果密钥丢失或遗忘,则无法检索;必须创建新的客户端 ID 和密钥。

填充客户信息文件

CustomerInfo.yml 文件消除了每次运行 cmdlet 时提供客户信息参数的需要。任何客户信息都可以通过使用 cmdlet 参数进行覆盖。

使用 New-CvadAcCustomerInfoFile cmdlet 创建 CustomerInfo.yml 文件。

重要提示:

请勿手动编辑 CustomerInfo.yml 文件。这样做可能会导致意外的格式错误。

New-CvadAcCustomerInfoFile cmdlet 具有以下必需参数。

-  CustomerId:客户 ID。
-  ClientId:在 Citrix Cloud 上创建的客户客户端 ID。
  • Secret:在 Citrix Cloud 上创建的客户密钥。

示例:

New-CvadAcCustomerInfoFile -CustomerId markhof123 -ClientId 6813EEA6-46CC-4F8A-BC71-539F2DAC5984 -Secret TwBLaaaaaaaaaaaaaaaaaw==
<!--NeedCopy-->

您还可以使用指向已下载的 security.csv 文件的 SecurityCsvFileSpec 参数创建 CustomerInfo.yml。您还必须指定 CustomerId。

New-CvadAcCustomerInfoFile -SecurityCsvFileSpec C:\Users\my_user_name\downloads/security.csv -CustomerId markhof123
<!--NeedCopy-->
-  使用 `Set-CvadAcCustomerInfoFile` cmdlet 更新 `CustomerInfo.yml` 文件。此 cmdlet 仅更改客户端 ID。
    -  Set-CvadAcCustomerInfoFile -ClientId C80487EE-7113-49F8-85DD-2CFE30CC398E
<!--NeedCopy-->
-  以下是 `CustomerInfo.yml` 文件的示例。

-  # Created/Updated on 2020/01/29 16:46:47
            CustomerId: ‘markhof123’
            ClientId: ‘6713FEA6-46CC-4F8A-BC71-539F2DDK5384’
            Secret: ‘TwBLaaabbbaaaaaaaaaaw==’
            Environment: Production
            AltRootUrl: ‘’
            StopOnError: False
  • AlternateFolder: ‘’
    • Locale: ‘en-us’
    • Editor: ‘C:\Program Files\Notepad++\notepad++.exe’
    • Confirm: True
    • DisplayLog: True

填充区域映射文件

-  本地区域等同于云资源位置。与其他站点组件不同,您无法自动将本地区域导入到云中。相反,必须使用 `ZoneMapping.yml` 文件手动映射它。如果区域名称未与现有资源位置名称关联,则可能会发生导入失败。

-  如果本地站点只有一个区域,并且云站点只有一个资源位置,自动化配置工具将进行正确的关联,从而无需手动管理 `ZoneMapping.yml` 文件。

-  但是,如果本地站点有多个区域或云站点有多个资源位置,则手动更新 `ZoneMapping.yml` 文件以反映本地区域到云资源位置的正确映射。

-  `ZoneMapping.yml` 文件位于 `%HOMEPATH%\Documents\Citrix\AutoConfig` 中。`.yml` 文件的内容是一个字典,其中区域名称作为键,资源位置名称作为值。

-  例如,一个具有名为“Zone-1”的主区域和名为“Zone-2”的辅助区域的本地 Citrix Virtual Apps and Desktops 站点被迁移到具有两个新创建的云资源位置(名为“Cloud-RL-1”和“Cloud-RL-2”)的 Citrix DaaS 部署。在此情况下,ZoneMapping.yml 将配置如下:

-  Zone-1: Cloud-RL-1

-  Zone-2: Cloud-RL-2

-  > **注意:**
-  >
-  > 在冒号和资源位置名称之间添加一个空格。如果区域或资源位置名称中使用了空格,请用引号将名称括起来。

更新主机连接的安全文件

-  主机连接及其关联的虚拟机管理程序可以使用 ACT 进行导出和导入。

-  将虚拟机管理程序添加到主机连接需要特定于虚拟机管理程序类型的安全信息。出于安全考虑,此信息无法从本地站点导出。您必须手动提供此信息,以便自动化配置能够成功地将主机连接和虚拟机管理程序导入到云站点。

-  导出过程会在 `%HOMEPATH%\Documents\Citrix\AutoConfig` 中创建 `CvadAcSecurity.yml` 文件,其中包含特定虚拟机管理程序类型所需的每个安全项的占位符。在导入到云站点之前,必须更新 `CvadAcSecurity.yml` 文件。管理员更新会在多次导出中保留,并根据需要添加新的安全占位符。安全项永远不会被删除。有关详细信息,请参阅[手动更新 CvadAcSecurity.yml 文件](/en-us/tech-zone/learn/poc-guides/citrix-automated-configuration.html#manually-update-the-cvadacsecurityyml-file)。

-  HostConn1:
            ConnectionType: XenServer®
            UserName: root
            PasswordKey: rootPassword
            HostCon2:
            ConnectionType: AWS
            ApiKey: 78AB6083-EF60-4D26-B2L5-BZ35X00DA5CH
            SecretKey: TwBLaaaaaaaaaaaaaaaaaw==
            Region: East

每个虚拟机管理程序的安全信息

以下列出了每种虚拟机管理程序类型所需的安全信息。

-  XenServer、Hyper-V、VMware
-  用户名
-  明文密码
-  Microsoft Azure
-  订阅 ID
-  应用程序 ID
-  应用程序密钥
-  AWS
-  服务账户 ID
-  应用程序密钥
-  区域

-  ### 特殊安全注意事项

所有安全信息均以明文形式输入。如果不建议使用明文,则可以使用 Studio 手动创建主机连接和关联的虚拟机管理程序。主机连接和虚拟机管理程序名称必须与其本地对应项完全匹配,以便可以成功导入使用主机连接的计算机目录。

-  ## 导出您的 Citrix Virtual Apps and Desktops 本地配置

-  使用 `export` PowerShell 命令,可以导出您现有的本地配置并获取必要的 `.yml` 文件。这些文件用于将您所需的配置导入到 Citrix Cloud。

支持的迁移对象

-  自动化配置支持移动以下组件的配置:

-  标记
-  委派管理
-  范围
-  角色
-  主机连接
-  单个资源池
-  管理范围
-  计算机目录
-  管理范围
-  计算机
-  远程电脑访问、物理、池化、预配、[MCS](#understand-migrating-machine-creation-services-provisioned-catalogs)、分配
-  StoreFront™
-  交付组
-  访问策略
-  管理范围关联
-  应用程序访问策略
-  分配策略
-  授权/桌面策略
-  电源计划
-  会话保留
-  会话预启动
-  重启计划
-  标记
-  应用程序组
-  管理范围关联
-  交付组
-  用户和组
  • 应用程序
    • 应用程序文件夹
    • 图标
    • 应用程序
    • 代理配置的 FTA
    • 标记
    • 组策略
    • 用户区域首选项

导出本地配置

  1. 双击 Auto Config 图标。此时将显示一个 PowerShell 窗口。
  2. 运行以下命令以导出所有组件。导出本地配置不会以任何方式更改它。

    Export-CvadAcToFile
    <!--NeedCopy-->
    
  • 首次运行任何 cmdlet 后,将创建一个包含 .yml 配置文件和日志的导出文件夹。该文件夹位于 %HOMEPATH%\Documents\Citrix\AutoConfig。每次后续导出都会创建一个子文件夹。父文件夹 %HOMEPATH%\Documents\Citrix\AutoConfig 始终包含最新导出的文件。

注意:

如果未在 Delivery Controller 上安装自动化配置,请在通过 PowerShell 使用该工具之前,运行 import-module Citrix.AutoConfig.Commands。如果使用 Auto Config 图标打开自动化配置,则无需执行此步骤。

如果遇到任何错误或异常,请参阅日志文件中的“修复”部分。

将配置导入到 Citrix DaaS

重要提示:

  • 将本地部署迁移到云时,请确保包含 Citrix 设置的域和 OU GPO 已迁移到云。Citrix Web Studio™ 不支持 GPMC,因此域和 OU GPO 在 Web Studio 中不可见。Citrix 策略引擎会对位于域和 OU 中的 VDA 和用户强制执行域和 OU GPO。登录 VDA 后,用户可能会看到域和 OU GPO 中的策略已应用于其会话。但是,管理员无法看到这些策略和设置,这可能会导致混淆。
-  ### 组件迁移顺序

-  此处列出了组件及其依赖项。组件的依赖项必须在导入或合并之前就位。如果缺少依赖项,可能会导致导入或合并命令失败。如果导入或合并失败,日志文件的“**修复**”部分会显示缺少的依赖项。
    1. 标记
      • 无前置依赖项
    1. 委派管理
      • 无前置依赖项
  1. 主机连接
    • CvadAcSecurity.yml 中的安全信息
  2. 计算机目录
    • Active Directory 中存在的计算机
    • 主机连接
    • 标记
  3. StoreFront
  4. 交付组
    • Active Directory 中存在的计算机
    • Active Directory 中存在的用户
    • 计算机目录
    • 标记
  5. 应用程序组
    • 交付组
    • 标记
  6. 应用程序
    • 交付组
    • 应用程序组
    • 标记
  7. 组策略
    • 交付组
    • 标记
  8. 用户区域首选项

运行导入

  1. 双击 Auto Config 图标。此时将显示一个 PowerShell 窗口。
  2. 运行以下命令以导入所有组件。

    Merge-CvadAcToSite
    <!--NeedCopy-->
    

验证预期状态与新的当前状态。各种导入选项控制导入结果是与本地站点完全相同还是其子集。

运行 cmdlet 后,将创建一个包含 .yml 配置文件和日志的导出文件夹。该文件夹位于 %HOMEPATH%\Documents\Citrix\AutoConfig

如果遇到任何错误或异常,请参阅日志文件中的“修复”部分。

  • 注意:

  • 如果 Delivery Controller 上未安装 Automated Configuration,请在使用 PowerShell 通过该工具之前运行 import-module Citrix.AutoConfig.Commands。如果使用“自动配置”图标打开 Automated Configuration,则不需要此步骤。

了解导入操作

导入过程旨在准确执行更新、仅执行必要的更新并验证所有更新均已正确完成。所有导入操作都遵循以下步骤:

  1. 读取导出的 .yml 文件(预期状态)。
  2. 读取云(当前状态)。
  3. 将导入前的云状态备份到 .yml 文件(如有必要,可以还原预备份)。
  4. 评估预期状态和当前状态之间的差异。这决定了要进行的更新。
  5. 进行更新。
  6. 重新读取云(新的当前状态)。
  7. 将导入后的云状态备份到 .yml 文件(如有必要,可以还原导入后备份)。
  8. 将新的当前状态与预期状态进行比较。
  9. 报告比较结果。

粒度迁移

重要提示:

有关组件迁移顺序的更多信息,请参阅组件迁移顺序

您可以仅选择性地迁移组件,甚至仅迁移组件名称。

  • 支持的组件参数包括 MachineCatalogsTags 等。
  • 支持的组件名称参数包括 IncludeByNameExcludeByName 参数以及其他参数。

有关参数及其使用方法的更多信息,请参阅粒度迁移参数

激活站点

本地站点和云站点中的 Delivery Controller 都控制着资源,例如代理桌面、应用程序和重新启动计算机。当一组通用资源由两个或多个站点控制时,就会出现问题。从本地站点迁移到云站点时,可能会出现这种情况。本地和云 Delivery Controller 都有可能管理同一组资源。这种双重管理可能导致资源不可用和无法管理,并且难以诊断。

站点激活允许您控制活动站点的受控位置。

站点激活通过交付组维护模式进行管理。当站点处于非活动状态时,交付组将置于维护模式。对于活动站点,将从交付组中移除维护模式。

站点激活不影响或管理 VDA 注册或计算机目录。

  • Set-CvadAcSiteActiveStateCloud
  • Set-CvadAcSiteActiveStateOnPrem

所有 cmdlet 都支持 IncludeByNameExcludeByName 筛选。此参数允许您选择哪些交付组可以更改其维护模式。可以根据需要选择性地更改交付组。

导入并将控制权转移到云

以下是关于如何从本地站点导入并将控制权转移到云站点的高级描述。

  1. 将本地站点导出并导入到云。确保任何导入 cmdlet 上都不存在 –SiteActive 参数。本地站点处于活动状态,云站点处于非活动状态。默认情况下,云站点交付组处于维护模式。
  2. 验证云内容和配置。
  3. 在非工作时间,将本地站点设置为非活动状态。–SiteActive 参数必须不存在。所有本地站点交付组都处于维护模式。
    • Set-CvadAcSiteActiveStateOnPrem
  4. 将云站点设置为活动状态。–SiteActive 参数必须存在。没有云站点交付组处于维护模式。
    • Set-CvadAcSiteActiveStateCloud –SiteActive
  5. 验证云站点处于活动状态,本地站点处于非活动状态。

将控制权转移回本地站点

要将控制权从云站点转移到本地站点:

  1. 在非工作时间,将云站点设置为非活动状态。所有云站点交付组都处于维护模式。
    • Set-CvadAcSiteActiveStateCloud
  2. 将本地站点设置为活动状态。没有本地站点交付组处于维护模式。
    • Set-CvadAcSiteActiveStateOnPrem -SiteActive

其他站点激活信息

  • 如果没有计算机进行电源管理,并且没有重新启动计划(这通常意味着也没有主机连接),则所有云交付组都可以作为活动组导入。在导入后,将 -SiteActive 添加到 Merge-CvadAcToSite/Import-CvadAcToSite 或运行 Set-CvadAcSiteActiveStateCloud -SiteActive
  • 如果计算机进行电源管理或有重新启动计划,则需要不同的过程。例如,在这种情况下从本地切换到云时,使用 Set-CvadAcSiteActiveStateOnPrem 将本地站点设置为非活动状态。然后,使用 Set-CvadAcSiteActiveStateCloud -SiteActive 将云站点设置为活动状态。
  • Set-CvadAcSiteActiveStateCloudSet-CvadAcSiteActiveStateOnPrem cmdlet 也用于反转此过程。例如,运行不带 -SiteActive 参数的 Set-CvadAcSiteActiveStateCloud,然后运行带 -SiteActive 参数的 Set-CvadAcSiteActiveStateOnPrem

了解迁移 Machine Creation Services 预配的目录

注意:

此功能仅在 3.0 及更高版本中可用。请使用 Automated Configuration 中的 Get-CvadAcStatus 检查您的版本。

Machine Creation Services (MCS) 目录创建两种不同类型的目录:

  • 当对计算机所做的更改丢失或恢复时(通常是发布应用程序的服务器操作系统)——这是一种池化 VDI/多会话用例
  • 当对计算机所做的更改在重新启动后保留时(通常是具有专用用户的客户端操作系统)——这是一种静态 VDI 用例

可以在 Citrix Studio 的目录节点中确认目录类型,并查看目录的“用户数据:”值。

注意:

无法使用 Automated Configuration 从云中备份 MCS。

池化 VDI/多会话目录

“用户数据: 丢弃”的目录是池化 VDI 目录,只能迁移主映像和配置。这些目录中的任何虚拟机都不会被迁移。这是因为虚拟机的生命周期由您从中导入的站点维护,这意味着每次计算机开机时,其状态都可能会发生变化。这使得导入变得不可能,因为虚拟机的导入数据会很快变得不同步。

当您使用该工具迁移这些目录时,它会创建目录元数据并启动主映像创建,但不会导入任何计算机。

由于此过程的创建时间可能因主映像的大小而异,因此工具中的导入命令仅启动 MCS 目录创建,而不会等待其完成。导入完成后,请使用云部署中的 Studio 监视目录创建进度。

主映像创建完成后,您可以预配计算机。请考虑容量因素,因为您的本地使用会占用容量。

使用该目录的所有其他对象(交付组、应用程序、策略等)都可以导入,并且无需等待主映像创建。目录创建完成后,可以将计算机添加到导入的目录中,然后用户即可启动其资源。

注意:

使用工具中可用的相同命令来迁移目录和所有其他对象。

静态 VDI 目录

注意:

由于此操作会导入存储在数据库中的低级别详细信息,因此必须从具有数据库访问权限的计算机运行此过程。

静态 VDI 目录会迁移主映像、配置和所有虚拟机。与池化 VDI 用例不同,无需创建映像。

VDA 必须指向连接器才能向云注册。

请参阅激活站点部分,以激活云站点,从而使重新启动计划、电源管理和其他项目由云控制。

迁移完成后,如果您想从本地站点删除此目录,则必须选择保留 VM 和 AD 帐户。否则,它们将被删除,云站点将指向已删除的 VM。

迁移后更新 MCS 标签以检测孤立资源

将配置从本地迁移到云站点,或从云配置迁移到另一个云站点后,您必须更新 MCS 站点 ID 标签(对于持久性 VM),以便正确检测孤立资源。为此,请使用 PowerShell 命令 Set-ProvResourceTags。目前,此功能适用于 Azure。

详细步骤如下:

  1. 使用 PowerShell 命令 Set-ProvResourceTags 从新的 Citrix 站点更新 MCS 站点 ID 标签。例如:

    Set-ProvResourceTags -ProvisioningSchemeUid xxxxx  [-VMName <String>] [-VMBatchSize XX] [-ResourceType XX]
    <!--NeedCopy-->
    

    或者,

    Set-ProvResourceTags -ProvisioningSchemeName xxxxx  [-VMName <String>] [-VMBatchSize XX] [-ResourceType XX]
    <!--NeedCopy-->
    

参数详细信息如下:

  • ProvisioningSchemeUidProvisioningSchemeName 是一个强制参数。
  • VMName 是一个可选参数。如果未指定 VMName,则会更新此计算机目录中所有 VM 的标签。
  • VMBatchSize 是一个可选参数,用于将所有 VM 分批。如果未指定 VMBatchSize,则应用默认值 (10)。范围是 1 到 60。
  • ResourceType 可以是以下之一:

    • MachineCatalog:用于更新计算机目录资源的标签。
    • VirtualMachine:用于更新 VM 相关资源的标签。
    • All:(默认 ResourceType):用于更新计算机目录和 VM 相关资源的标签。