管理应用商店的订阅数据

使用 PowerShell cmdlet 管理应用商店的订阅数据。

注意:

使用 StoreFront 管理控制台或 PowerShell 可管理 StoreFront。请勿同时使用这两种方法。使用 PowerShell 更改 StoreFront 配置之前,请始终关闭 StoreFront 管理控制台。Citrix 还建议您在进行更改之前备份现有订阅数据,以便能够回滚到前一个状态。

清除订阅数据

您的部署中的每个应用商店都存在一个包含订阅数据的文件夹和数据存储。

  1. 在 StoreFront 服务器上停止 Citrix Subscriptions Store 服务。如果 Citrix Subscriptions Store 服务正在运行,则无法删除任何应用商店的订阅数据。
  2. 找到 StoreFront 服务器上的订阅应用商店文件夹:C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Citrix\SubscriptionsStore\1__Citrix_<StoreName>
  3. 删除订阅应用商店文件夹的内容,但不删除文件夹本身。
  4. 在 StoreFront 服务器上重新启动 Citrix Subscriptions Store 服务。

在 StoreFront 3.5 或更高版本中,可以使用以下 PowerShell 脚本清除应用商店的订阅数据。以具有停止或启动服务以及删除文件权限的管理员身份运行此 PowerShell 函数。此 PowerShell 函数可实现与手动执行上述步骤相同的结果。

Citrix Subscriptions Store 服务必须正在服务器上运行,才能成功运行 cmdlet。

function Remove-SubscriptionData

{
        [CmdletBinding()]

        [Parameter(Mandatory=$False)][String]$Store = "Store"

        $SubsService = "Citrix Subscriptions Store"

        # Path to Subscription Data in StoreFront version 2.6 or later

        $SubsPath = "C:\Windows\ServiceProfiles\NetworkService\AppData\Roaming\Citrix\SubscriptionsStore\1__Citrix_$Store*"

        Stop-Service -displayname $SubsService

        Remove-Item $SubsPath -Force -Verbose

        Start-Service -displayname $SubsService

        Get-Service -displayname $SubsService
}

    Remove-SubscriptionData -Store "YourStore"

导出订阅数据

可以使用以下 PowerShell cmdlet 获取制表符分隔的 .txt 文件格式的应用商店订阅数据的备份。

$StoreObject = Get-STFStoreService -SiteID 1 -VirtualPath "/citrix/<yourstore>"

Export-STFStoreSubscriptions -StoreService $StoreObject -FilePath "$env:USERPROFILE\Desktop\Subscriptions.txt"

如果要管理多服务器部署,可以在 StoreFront 服务器组内的任意服务器上运行此 PowerShell cmdlet。服务器组中的每台服务器都会维持与其对等服务器相同的订阅数据的同步副本。如果您认为自己遇到 StoreFront 服务器之间的订阅同步问题,请从组中的所有服务器中导出数据并进行比较以查看差异。

还原订阅数据

使用 Restore-STFStoreSubscriptions 可覆盖您的现有订阅数据。可以使用之前通过 Export-STFStoreSubscriptions 创建的制表符分隔的 .txt 文件备份还原应用商店的订阅数据。

$StoreObject = Get-STFStoreService -SiteID 1 -VirtualPath "/citrix/<yourstore>"

Restore-STFStoreSubscriptions -StoreService $StoreObject -FilePath "$env:USERPROFILE\Desktop\Subscriptions.txt"

有关 Restore-STFStoreSubscriptions 的详细信息,请参阅 https://developer-docs.citrix.com/projects/storefront-powershell-sdk/en/latest/Restore-STFStoreSubscriptions/

还原单个 StoreFront 服务器上的数据

在单服务器部署中,不需要关闭 Subscriptions Store 服务。也不需要在还原订阅数据之前清除现有订阅数据。

还原 StoreFront 服务器组中的数据

要将订阅数据还原到服务器组,需要执行以下操作。

包含三台 StoreFront 服务器的示例服务器组部署。

  • StoreFrontA
  • StoreFrontB
  • StoreFrontC
  1. 备份三台服务器中的任意服务器的现有订阅数据。
  2. 停止服务器 StoreFrontB 和 C 上的 Subscriptions Store 服务。此操作将阻止服务器在 StoreFrontA 更新期间发送或接收订阅数据。
  3. 清理服务器 StoreFrontB 和 C 中的订阅数据。这可以防止还原的订阅数据出现不一致的情况。
  4. 使用 Restore-STFStoreSubscriptions cmdlet 还原 StoreFrontA 上的数据。不需要停止 Subscriptions Store 服务,也不需要清理 StoreFrontA 上的订阅数据(这些数据在还原操作期间被覆盖)。
  5. 重新启动服务器 StoreFrontB 和 StoreFrontC 上的 Subscriptions Store 服务。这些服务器之后可以从 StoreFrontA 接收数据的副本。
  6. 等待所有服务器之间发生同步。所需的时间取决于 StoreFrontA 上存在的记录数量。如果所有服务器都位于本地网络连接中,同步通常会快速发生。跨广域网连接的订阅同步可能需要较长时间。
  7. 从 StoreFrontB 和 C 中导出数据以确认同步已完成,或者查看应用商店订阅计数器。

导入订阅数据

如果应用商店中没有订阅数据,请使用 Import-STFStoreSubscriptions。此 cmdlet 还允许您将订阅数据从一个应用商店传输到另一个应用商店,或者将订阅数据导入到新预配的 StoreFront 服务器。

$StoreObject = Get-STFStoreService -SiteID 1 -VirtualPath "/citrix/<yourstore>"

Import-STFStoreSubscriptions -StoreService $StoreObject -FilePath "$env:USERPROFILE\Desktop\Subscriptions.txt"

有关 Import-STFStoreSubscriptions 的详细信息,请参阅 https://developer-docs.citrix.com/projects/storefront-powershell-sdk/en/latest/Import-STFStoreSubscriptions/

订阅数据文件详细信息

订阅数据文件为文本文件,每个用户订阅在其中占一行。每行均为以制表符分隔的值序列:

<user-identifier> <resource-id> <subscription-id> <subscription-status> <property-name> <property-value> <property-name> <property-value> ...

其中:

  • <user-identifier> - 必选。标识用户的字符序列。此标识符是用户的 Windows 安全标识符。
  • <resource-id> - 必选。标识所订阅资源的字符序列。
  • <subscription-id> - 必选。唯一标识订阅的字符序列。此值未使用(尽管数据文件中必须存在一个值)。
  • <subscription-status> - 必选。订阅的状态:已订阅或已取消订阅。
  • <property-name><property-value> - 可选。零对或多对属性名称/值对的序列。它们表示与 StoreFront 客户端(通常为 Citrix Workspace 应用程序)的订阅相关联的属性。具有多个值并且以名称相同的多个名称/值对表示的属性(例如,“… MyProp A MyProp B …”表示具有值 A、B 的属性 MyProp)。

示例

S-0-0-00-0000000000-0000000000-0000000000-0000 XenApp.Excel 21EC2020-3AEA-4069-A2DD-08002B30309D Subscribed dazzle:position 1

StoreFront 服务器磁盘上订阅数据的大小

StoreFront 服务器磁盘上订阅数据的大小

导入和导出 .txt 文件的大小

导入和导出 .txt 文件的大小

应用商店订阅计数器

可以使用 Microsoft Windows 性能监视器计数器(开始 > 运行 > perfmon)显示(例如)服务器上的订阅记录总数或 StoreFront 服务器组之间同步的记录数量。

使用 PowerShell 查看订阅计数器

Get-Counter -Counter "\Citrix Subscription Store(1__citrix_store)\Subscription Entries Count (including unpurged deleted records)"

Get-Counter -Counter "\Citrix Subscription Store Synchronization\Subscriptions Store Synchronizing"

Get-Counter -Counter "\Citrix Subscription Store Synchronization\Number Subscriptions Synchronized"

Get-Counter -Counter "\Citrix Subscription Store Synchronization\Number Subscriptions Transferred"