导出和导入 StoreFront 配置
注意:
您只能导入与目标 StoreFront 安装版本相同的 StoreFront 配置。
您可以导出 StoreFront 部署的整个配置。这包括单服务器部署和服务器组配置。如果导入服务器上已存在现有部署,则当前配置将被擦除,然后替换为备份存档中包含的配置。如果目标服务器是全新出厂默认安装,则将使用备份中存储的导入配置创建新部署。导出的配置备份如果未加密,则为单个 .zip 存档形式;如果您选择在创建备份文件时对其进行加密,则为 .ctxzip 形式。
配置导出和导入的适用场景
- 仅备份处于正常工作和受信任状态的 StoreFront 部署。对配置的任何更改都需要进行新的备份来替换旧备份。您无法修改现有备份,因为 backup.zip 文件的文件哈希会阻止修改。
- 在升级 StoreFront 之前进行备份,以用于灾难恢复。
- 克隆现有测试 StoreFront 部署以投入生产。
- 通过将生产部署克隆到测试环境中来创建用户验收环境。
- 在操作系统迁移期间移动 StoreFront,例如将托管从 Windows Server 2019 升级到 Windows Server 2022。不支持就地操作系统升级。
- 在多地理位置部署中构建额外的服务器组,例如在拥有多个数据中心的大型企业中。
导出和导入 StoreFront 配置时的注意事项
- 您当前是否使用任何 Citrix® 发布的身份验证 SDK 示例,例如 Magic Word 身份验证或第三方身份验证自定义?如果是,则在导入包含额外身份验证方法的配置之前,您必须在所有导入服务器上安装这些软件包。如果任何导入服务器上未安装所需的身份验证 SDK 软件包,则配置导入将失败。如果将配置导入服务器组,请在组的所有成员上安装身份验证软件包。
- 您可以加密或解密您的配置备份。导出和导入 PowerShell cmdlet 支持这两种用例。
- 您可以稍后解密加密的备份 (.ctxzip),但 StoreFront 无法重新加密未加密的备份文件 (.zip)。如果需要加密备份,请使用包含您选择的密码的 PowerShell 凭据对象再次执行导出。
- StoreFront 当前安装在 IIS 中的网站 (导出服务器) 的 SiteID 必须与您要恢复备份的 StoreFront 配置的 IIS 中目标网站 (导入服务器) 的 SiteID 匹配。
PowerShell cmdlet
Export-STFConfiguration
| 参数 | 说明 |
|---|---|
| -TargetFolder (String) | 备份存档的导出路径。示例:”$env:userprofile\desktop\” |
| -Credential (PSCredential Object) | 指定一个凭据对象,用于在导出期间创建加密的 .ctxzip 备份存档。PowerShell 凭据对象应包含用于加密和解密的密码。请勿同时使用 -Credential 和 -NoEncryption 参数。示例:$CredObject |
| -NoEncryption (Switch) | 指定备份存档应为未加密的 .zip 文件。请勿同时使用 -NoEncryption 和 -Credential 参数。 |
| -ZipFileName (String) | StoreFront 配置备份存档的名称。请勿添加文件扩展名,例如 .zip 或 .ctxzip。文件扩展名将根据导出期间是否指定了 -Credential 或 -NoEncryption 参数自动添加。示例:”backup” |
| -Force (Boolean) | 此参数会自动覆盖与指定导出位置中已存在的备份文件同名的备份存档。 |
重要提示:
StoreFront 3.5 中的 SiteID 参数在版本 3.6 中已弃用。执行导入时不再需要指定 SiteID,因为备份存档中包含的 SiteID 将始终被使用。请确保 SiteID 与导入服务器上 IIS 中已配置的现有 StoreFront 网站匹配。不支持 SiteID 1 到 SiteID 2 的配置导入。
Import-STFConfiguration
| 参数 | 说明 |
|---|---|
| -ConfigurationZip (String) | 要导入的备份存档的完整路径。这还应包括文件扩展名。未加密的备份存档使用 .zip,加密的备份存档使用 .ctxzip。示例:$env:userprofile\desktop\backup.ctxzip
|
| -Credential (PSCredential Object) | 指定一个凭据对象,用于在导入期间解密加密的备份。示例:$CredObject
|
| -HostBaseURL (String) | 如果包含此参数,则使用您指定的主机基本 URL,而不是导出服务器的主机基本 URL。示例:https://<importingserver>.example.com
|
Unprotect-STFConfigurationBackup
| 参数 | 说明 |
|---|---|
| -TargetFolder (String)
-Credential (PSCredential Object) |
备份存档的导出路径。示例:$env:userprofile\desktop
使用此参数创建加密备份存档的未加密副本。指定包含用于解密密码的 PowerShell 凭据对象。示例: $CredObject
|
| -EncryptedConfigurationZip (String) | 要解密的加密备份存档的完整路径。您必须指定文件扩展名 .ctxzip。示例:$env:userprofile\\desktop\\backup.ctxzip
|
| -OutputFolder (String)
-Force (Boolean) |
用于创建加密 (.ctxzip) 备份存档的未加密副本 (.zip) 的路径。备份的原始加密副本将保留,以便可以重复使用。请勿为未加密副本指定文件名和文件扩展名。示例:$env:userprofile\desktop
此参数会自动覆盖与指定导出位置中已存在的备份文件同名的备份存档。 |
配置导出和导入示例
将 StoreFront cmdlet 导入当前 PowerShell 会话
在 StoreFront 服务器上打开 PowerShell 集成脚本环境 (ISE) 并运行:
$env:PSModulePath = [Environment]::GetEnvironmentVariable('PSModulePath','Machine')
$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
<!--NeedCopy-->
单服务器场景
在服务器 A 上创建现有配置的未加密备份并将其恢复到同一部署
导出您希望备份的服务器配置。
Export-STFConfiguration -targetFolder "$env:userprofile\desktop\" -zipFileName "backup" -NoEncryption
<!--NeedCopy-->
将 backup.zip 文件复制到安全位置。您可以使用此备份进行灾难恢复,将服务器恢复到以前的状态。
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.zip" -HostBaseURL "https://storefront.example.com"
<!--NeedCopy-->
备份服务器 A 上的现有配置并将其恢复到服务器 B 以创建现有服务器的克隆
导出您希望备份的服务器配置。
Export-STFConfiguration -targetFolder "$env:userprofile\desktop\" -zipFileName "backup" -NoEncryption
<!--NeedCopy-->
将 backup.zip 文件复制到服务器 B 的桌面。
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.zip" -HostBaseURL "https://serverB.example.com"
<!--NeedCopy-->
StoreFront 已部署到 IIS 中的自定义网站。将配置恢复到另一个自定义网站部署
服务器 A 已将 StoreFront 部署到自定义网站位置,而不是 IIS 中通常的默认网站。在 IIS 中创建的第二个网站的 IIS SiteID 为 2。StoreFront 网站的物理路径可以位于非系统驱动器(例如 d:\)或默认的 c:\ 系统驱动器上,但应使用大于 1 的 IIS SiteID。
IIS 中已配置了一个名为 StoreFront 的新网站,它使用 SiteID = 2。StoreFront 已部署在 IIS 中的自定义网站上,其物理路径位于驱动器 d:\inetpub\wwwrooot。

- 导出服务器 A 配置的副本。
- 在服务器 B 上,使用名为 StoreFront 的新网站配置 IIS,该网站也使用 SiteID 2。
-
将服务器 A 配置导入服务器 B。备份中包含的站点 ID 将被使用,并且必须与您要导入 StoreFront 配置的目标网站匹配。
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -HostBaseURL "https://serverB.example.com" <!--NeedCopy-->
服务器组场景
场景 1:备份现有服务器组配置并稍后将其恢复到同一服务器组部署
之前的配置备份是在只有两台 StoreFront 服务器(2012R2-A 和 2012R2-B)是服务器组成员时进行的。备份存档中包含备份时 CitrixClusterMembership 的记录,其中仅包含两台原始服务器 2012R2-A 和 2012R2-B。由于业务需求,自原始备份以来,StoreFront 服务器组部署的规模已增加,因此已向服务器组添加了额外的节点 2012R2-C。备份中保存的服务器组底层 StoreFront 配置未更改。即使导入仅包含两个原始服务器组节点旧备份,也必须维护当前由三台服务器组成的 CitrixClusterMembership。在导入期间,当前群集成员身份将保留,并在配置成功导入主服务器后写回。如果自原始备份以来已从服务器组中删除了服务器组节点,则导入还会保留当前的 CitrixClusterMembership。
-
从 2012R2-A 导出服务器组 1 配置,2012R2-A 是用于管理整个服务器组的主服务器。

-
稍后,您将额外的服务器 2012R2-C 添加到现有服务器组。

-
服务器组的配置必须恢复到已知的先前工作状态。StoreFront 在导入过程中备份当前由三台服务器组成的 CitrixClusterMembership,并在导入成功后将其恢复。
-
将服务器组 1 配置重新导入到节点 2012R2-A。
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -HostBaseURL "https://servergroup1.example.com" <!--NeedCopy--> -
将新导入的配置传播到整个服务器组,以便所有服务器在导入后都具有一致的配置。
场景 2:备份服务器组 1 中的现有配置,并使用它在不同的出厂默认安装上创建新的服务器组。然后,您可以将其他新的服务器组成员添加到新的主服务器
服务器组 2 已创建,包含两台新服务器 2012R2-C 和 2012R2-D。服务器组 2 配置将基于现有部署服务器组 1 的配置,服务器组 1 也包含两台服务器 2012R2-A 和 2012R2-B。创建新服务器组时,备份存档中包含的 CitrixClusterMembership 不会使用。当前的 CitrixClusterMembership 始终会在导入成功后进行备份和恢复。使用导入配置创建新部署时,CitrixClusterMembership 安全组仅包含导入服务器,直到其他服务器加入新组。服务器组 2 是一个新部署,旨在与服务器组 1 共存。请指定 -HostBaseURL 参数。服务器组 2 将使用新的出厂默认 StoreFront 安装创建。
-
从 2012R2-A 导出服务器组 1 配置,2012R2-A 是用于管理整个服务器组的主服务器。
-
将服务器组 1 配置导入到节点 2012R2-C,该节点将成为用于管理新创建的服务器组 2 的主服务器。
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -HostBaseURL "https://servergroup2.example.com" <!--NeedCopy--> -
加入将成为新服务器组 2 部署一部分的任何其他服务器。将服务器组 1 中新导入的配置传播到服务器组 2 的所有新成员是自动的,因为这是添加新服务器时正常加入过程的一部分。
场景 3:备份服务器组 A 中的现有配置并使用它覆盖现有服务器组 B 配置
服务器组 1 和服务器组 2 已存在于两个独立的数据中心。服务器组 1 上进行了许多 StoreFront 配置更改,您应该将这些更改应用到另一个数据中心中的服务器组 2。您可以将更改从服务器组 1 移植到服务器组 2。请勿在服务器组 2 上的备份存档中使用 CitrixClusterMembership。在导入期间指定 -HostBaseURL 参数,因为服务器组 2 的主机基本 URL 不应更改为服务器组 1 当前使用的相同 FQDN。服务器组 2 是一个现有部署。
-
从 2012R2-A 导出服务器组 1 配置,2012R2-A 是用于管理整个服务器组的主服务器。
-
将服务器组 1 配置导入到节点 2012R2-C 上的出厂默认安装中,该节点将成为新服务器组 2 的主服务器。
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.zip" -NoEncryption -HostBaseURL "https://servergroup2.example.com" <!--NeedCopy-->
创建服务器配置的加密备份
PowerShell 凭据对象包含 Windows 帐户用户名和密码。PowerShell 凭据对象可确保您的密码在内存中受到保护。
注意:
要加密配置备份存档,您只需要密码即可执行加密和解密。凭据对象中存储的用户名不使用。您必须在导出和导入服务器上使用的 PowerShell 会话中创建包含相同密码的凭据对象。在凭据对象中,您可以指定任何用户。
PowerShell 要求您在创建新的凭据对象时指定用户。此示例代码为方便起见获取当前登录的 Windows 用户。
在导出服务器上的 PowerShell 会话中创建 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)
<!--NeedCopy-->
将配置导出到 backup.ctxzip,这是一个加密的 zip 文件。
Export-STFConfiguration -targetFolder "$env:userprofile\desktop\" -zipFileName "backup" -Credential $CredObject
<!--NeedCopy-->
在导入服务器上的 PowerShell 会话中创建相同的 PowerShell 凭据对象。
Import-STFConfiguration -configurationZip "$env:userprofile\desktop\backup.ctxzip" -Credential $CredObject -HostBaseURL "https://storefront.example.com"
<!--NeedCopy-->
取消保护现有加密备份存档
$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
<!--NeedCopy-->