导出和导入 StoreFront 配置

注意:

只能导入与目标 StoreFront 安装相同的 StoreFront 版本的 StoreFront 配置。

可以导出 StoreFront 部署的完整配置。这包括单个服务器部署和服务器组配置。如果现有部署已经存在于导入服务器上,当前配置将被擦除,然后替换为备份存档中包含的配置。如果目标服务器是全新的出厂默认安装,将使用存储在备份中的导入配置创建新部署。如果未加密,导出的配置备份将采用单个 .zip 存档的形式存储,如果在创建时选择加密备份文件,导出的配置备份将以 .ctxzip 的形式存储。

导出和导入 StoreFront 配置时的注意事项

  • 是要使用备份存档中包含的主机基本 URL,还是指定要在导入服务器上使用的新的主机基本 URL?
  • 当前是否使用了任何 Citrix 已发布身份验证 SDK 示例,例如魔术字身份验证或第三方身份验证自定义?如果是,则必须在导入包含额外身份验证方法的配置之前,在所有导入服务器上安装这些包。如果某些导入服务器上未安装所需的身份验证 SDK 包,配置导入操作将失败。如果要将配置导入到服务器组中,请在组的所有成员上安装身份验证包。
  • 可以加密或解密配置备份。导出和导入 PowerShell cmdlet 支持这两种用例。
  • 可以在以后解密经过加密的备份 (.ctxzip),但是 StoreFront 无法重新加密解密后的备份文件 (.zip)。如果需要使用经过加密的备份,请使用包含所选密码的 PowerShell 凭据对象重新执行导出。
  • IIS 中当前已安装 StoreFront 的 Web 站点(导出服务器)的 SiteID 必须与 IIS 中需还原为已备份的 StoreFront 配置的目标 Web 站点(导入服务器)的 SiteID 匹配。

用于加密和解密 StoreFront 备份的 PowerShell 凭据对象

PowerShell 凭据对象由 Windows 帐户用户名和密码组成。PowerShell 凭据对象可确保密码在内存中处于安全状态。

注意:

要加密配置备份存档,只需要使用密码执行加密和解密。无需使用凭据对象内存储的用户名。必须在 PowerShell 会话内创建包含相同密码的凭据对象(同时用于导出和导入服务器)。在凭据对象内,可以指定任何用户。

PowerShell 要求您在创建新凭据对象时指定用户。为方便起见,此示例代码仅获取当前登录的 Windows 用户。

$User = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$Password = "Pa55w0rd"
$Password = $Password | ConvertTo-SecureString -asPlainText -Force
$CredObject = New-Object System.Management.Automation.PSCredential($User,$Password)

PowerShell cmdlet

Export-STFConfiguration

参数 说明
-TargetFolder (字符串) 备份存档的导出路径。示例:”$env:userprofile\desktop\”
-Credential(PSCredential 对象) 在导出时指定凭据对象以创建加密的 .ctxzip 备份存档。PowerShell 凭据对象应包含用于加密和解密的密码。请勿同时使用 -Credential-NoEncryption 参数。示例:$CredObject
-NoEncryption(开关) 指定备份存档应采用未加密的 .zip 形式。请勿同时使用 -NoEncryption-Credential 参数。
-ZipFileName (字符串) StoreFront 配置备份存档的名称。请勿添加文件扩展名,例如 .zip 或 .ctxzip。系统根据导出期间指定的是 -Credential 参数还是 -NoEncryption 参数来自动添加文件扩展名。示例:”backup”
-Force(布尔值) 此参数自动覆盖与指定导出位置中已存在的现有备份文件同名的备份存档。

重要:

StoreFront 3.5 中的 SiteID 参数在版本 3.6 中已弃用。在执行导入时,不再需要指定 SiteID,因为始终会使用备份存档中包含的 SiteID。请确保 SiteID 与已在导入服务器上的 IIS 中配置的现有 StoreFront Web 站点相匹配。不支持 SiteID 1SiteID 2 的配置导入(反之亦然)。

Import-STFConfiguration

参数 说明
-ConfigurationZip (字符串) 要导入的备份存档的完整路径。此值还应该包含文件扩展名。未加密的备份存档使用 .zip,加密的备份存档使用 .ctxzip。示例: $env:userprofile\desktop\backup.ctxzip
-Credential(PSCredential 对象) 指定在导入时解密经过加密的备份所使用的凭据对象。示例: $CredObject
-HostBaseURL (字符串) 如果包含此参数,则将使用您指定的主机基本 URL,而不使用导出服务器中的主机基本 URL。示例: https://<importingserver>.example.com

Unprotect-STFConfigurationBackup

参数 说明
-TargetFolder (字符串) 备份存档的导出路径。示例: $env:userprofile\desktop\
-Credential(PSCredential 对象) 使用此参数将创建加密备份存档的未加密副本。指定包含解密密码的 PowerShell 凭据对象。示例: $CredObject
-EncryptedConfigurationZip (字符串) 要解密的加密备份存档的完整路径。必须指定文件扩展名 .ctxzip。示例: $env:userprofile\\desktop\\backup.ctxzip
-OutputFolder (字符串) 创建加密备份存档 (.ctxzip) 的取消加密副本 (.zip) 的路径。最初的加密备份副本将保留,以便重复使用。请勿指定取消加密副本的文件名和文件扩展名。示例: $env:userprofile\desktop\
-Force(布尔值) 此参数自动覆盖与指定导出位置中已存在的现有备份文件同名的备份存档。

配置导出和导入示例

将 StoreFront SDK 导入到当前的 PowerShell 会话

在 StoreFront 服务器上打开 PowerShell 集成脚本环境 (ISE) 并运行以下命令:

$SDKModules = 'C:\Program Files\Citrix\Receiver StoreFront\PowerShellSDK\Modules\Citrix.StoreFront'
Import-Module "$SDKModules\Citrix.StoreFront.psd1" -verbose
Import-Module "$SDKModules.Authentication\Citrix.StoreFront.Authentication.psd1" -verbose
Import-Module "$SDKModules.Roaming\Citrix.StoreFront.Roaming.psd1" -verbose
Import-Module "$SDKModules.Stores\Citrix.StoreFront.Stores.psd1" -verbose
Import-Module "$SDKModules.WebReceiver\Citrix.StoreFront.WebReceiver.psd1" -verbose
Import-Module "$SDKModules.SubscriptionsStore\Citrix.StoreFront.SubscriptionsStore.psd1" -verbose

单服务器场景

创建服务器 A 上现有配置的未加密备份并将其还原到相同的部署

Export-STFConfiguration -targetFolder "$env:userprofile\desktop\" -zipFileName "backup" -NoEncryption
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.zip"

创建服务器 A 上现有配置的已加密备份并将其还原到相同的部署

# 创建 PowerShell 凭据对象
$User = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$Password = "Pa55w0rd"
$Password = $Password | ConvertTo-SecureString -asPlainText -Force
$CredObject = New-Object System.Management.Automation.PSCredential($User,$Password)
Export-STFConfiguration -targetFolder "$env:userprofile\desktop\" -zipFileName "backup" -Credential $CredObject
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject

取消保护现有加密备份存档

$User = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$Password = "Pa55w0rd"
$Password = $Password | ConvertTo-SecureString -asPlainText -Force
$CredObject = New-Object System.Management.Automation.PSCredential($User,$Password)
Unprotect-STFConfigurationExport -encryptedConfigurationZip "$env:userprofile\desktop\backup.ctxzip" -credential $CredObject -outputFolder "c:\StoreFrontBackups" -Force

备份服务器 A 上的现有配置并将其还原到服务器 B 上的新出厂默认安装

服务器 B 是新部署,但是计划与服务器 A 同时存在。请指定 -HostBaseURL 参数。服务器 B 也是一个新的出厂默认 StoreFront 安装。

  1. 创建一个 PowerShell 凭据对象并导出一份加密的服务器 A 配置。
  2. 在服务器 B 上创建一个 PowerShell 凭据对象,使用的密码与加密备份时使用的密码相同。
  3. 使用 -HostBaseURL 参数,解密服务器 A 配置并将其导入到服务器 B 上。

    Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject -HostBaseURL "https://serverB.example.com"

备份服务器 A 上的现有配置并使用此备份覆盖服务器 B 上的现有部署

服务器 B 是配置过时的现有部署。使用服务器 A 配置更新服务器 B。 服务器 B 计划与服务器 A 同时存在。请指定 -HostBaseURL 参数。

  1. 创建一个 PowerShell 凭据对象并导出一份加密的服务器 A 配置。
  2. 在服务器 B 上创建一个 PowerShell 凭据对象,使用的密码与加密备份时使用的密码相同。
  3. 使用 -HostBaseURL 参数,解密服务器 A 配置并将其导入到服务器 B 上。

    Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" –Credential $CredObject -HostBaseURL "https://serverB.example.com"

使用相同的主机基本 URL 创建现有部署的克隆,例如在升级到新服务器操作系统和停用过时的 StoreFront 部署时

2012R2 服务器 B 是新部署,计划取代过时的 2008R2 服务器 A。 请使用备份存档中的 HostBaseURL。请勿在导入过程中使用 -HostBaseURL 参数。服务器 B 也是一个新的出厂默认 StoreFront 安装。

  1. 创建一个 PowerShell 凭据对象并导出 2008R2 服务器 A 配置的加密副本。
  2. 在 2012R2 服务器 B 上创建一个 PowerShell 凭据对象,使用的密码与加密备份时使用的密码相同。
  3. 不使用 -HostBaseURL 参数解密 2008R2 服务器 A 配置并将其导入到 2012R2 服务器 B 上。

    Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject

StoreFront 已经部署到 IIS 中的自定义 Web 站点上。将配置还原到另一个自定义 Web 站点部署上

服务器 A 具有部署到自定义 Web 站点位置上的 StoreFront,不使用 IIS 内的常用默认 Web 站点。在 IIS 内创建的第二个 Web 站点的 IIS SiteID 为 2。StoreFront Web 站点的物理路径可以位于另一个非系统驱动器上(例如 d:\)或默认的 c:\ 系统驱动器上,但应使用大于 1 的 IIS SiteID。

已在 IIS 中配置名为 StoreFront 的新 Web 站点,该站点使用 SiteID = 2。StoreFront 已经使用其位于驱动器 d:\inetpub\wwwrooot 上的物理路径部署到 IIS 中的自定义 Web 站点上。

本地化后的图片

  1. 创建一个 PowerShell 凭据对象并导出一份加密的服务器 A 配置。
  2. 在服务器 B 上,在 IIS 中配置一个名为 StoreFront 的新 Web 站点,该站点也使用 SiteID 2
  3. 在服务器 B 上创建一个 PowerShell 凭据对象,使用的密码与加密备份时使用的密码相同。
  4. 使用 -HostBaseURL 参数,解密服务器 A 配置并将其导入到服务器 B 上。使用备份中包含的站点 ID,并且该 ID 必须与要在其中导入 StoreFront 配置的目标 Web 站点的 ID 相匹配。

    Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject -HostBaseURL "https://serverB.example.com"

服务器组场景

场景 1:备份现有服务器组配置,然后将其还原到相同的服务器组部署中

当服务器组只有两个 StoreFront 服务器成员(2012R2-A 和 2012R2-B)时,已经执行过配置备份。执行备份时,备份存档内是一条仅包含两个原始服务器 2012R2-A 和 2012R2-B 的CitrixClusterMembership 记录。执行初始备份后,由于业务需要,StoreFront 服务器组部署的规模增加,服务器组中又增加了另一个节点 2012R2-C。备份中保留的服务器组基础 StoreFront 配置已经发生变化。即使导入了仅包含两个初始服务器组节点的旧备份,但也必须维护三个服务器当前的 CitrixClusterMembership。在导入过程中,将保留当前的群集成员关系,然后在配置成功导入到主服务器上之后执行写回。如果在执行初始备份之后,从服务器组删除服务器组节点,导入还会保留当前的 CitrixClusterMembership。

  1. 从 2012R2-A 中导出服务器组 1 配置,该服务器是用于管理整个服务器组的主服务器。

本地化后的图片

  1. 然后将另一台服务器 2012R2-C 添加到现有服务器组中。

本地化后的图片

  1. 必须将服务器组的配置还原到之前的某个已知工作状态。StoreFront 在导入过程中将备份三台服务器的当前 CitrixClusterMembership,并在导入成功后进行还原。

  2. 将服务器组 1 配置重新导入到 2012R2-A 节点上。

    Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject

  3. 将新导入的配置传播到整个服务器组,从而使所有服务器在导入后具有一致的配置。

场景 2:备份服务器组 1 的现有配置,使用此备份在另一个出厂默认安装上创建新的服务器组。然后,可以将其他新服务器组成员添加到新的主服务器

创建包含两个新服务器(2012R2-C 和 2012R2-D)的服务器组 2。服务器组 2 配置将基于现有部署(即服务器组 1)的配置,服务器组 1 也包含两个服务器 2012R2-A 和 2012R2-B。创建新服务器组时不使用备份存档中包含的 CitrixClusterMembership。始终备份当前的 CitrixClusterMembership 并在导入成功后进行还原。使用导入的配置创建新部署时,CitrixClusterMembership 安全组将仅包含导入服务器,直至将更多服务器加入新组。服务器组 2 是新部署,计划与服务器组 1 同时存在。指定 -HostBaseURL 参数。服务器组 2 将使用新的出厂默认 StoreFront 安装进行创建。

  1. 从 2012R2-A 中导出服务器组 1 配置,该服务器是用于管理整个服务器组的主服务器。

  2. 将服务器组 1 配置导入到节点 2012R2-C 上,此节点将作为管理新创建的服务器组 2 的主服务器。

    Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject -HostBaseURL "https://servergroup2.example.com"

  3. 加入将要成为新服务器组 2 部署一部分的任何其他服务器。从服务器组 1 新导入的配置传播到服务器组 2 所有新成员的过程是自动的,该过程属于添加新服务器时的正常加入流程的一部分。

场景 3:备份服务器组 A 的现有配置,使用此备份覆盖现有服务器组 B 的配置

服务器组 1 和服务器组 2 已经存在于两个单独的数据中心内。很多 StoreFront 配置更改在服务器组 1 上进行,您应该将这些更改应用到另一个数据中心内的服务器组 2 中。您可以将更改从服务器组 1 导出到服务器组 2。请勿在服务器组 2 上的备份存档中使用 CitrixClusterMembership。导入时请指定 -HostBaseURL 参数,因为服务器组 2 主机基本 URL 不应该更改为与服务器组 1 当前所使用的 FQDN 相同。服务器组 2 为现有部署。

  1. 从 2012R2-A 中导出服务器组 1 配置,该服务器是用于管理整个服务器组的主服务器。

  2. 将服务器组 1 配置导入到节点 2012R2-C 上的出厂默认安装中,此节点将作为新服务器组 2 的主服务器。

    Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject -HostBaseURL "https://servergroup2.example.com"

上一步

导出和导入 StoreFront 配置