Session Recording

管理录制文件

ICA 日志数据库 (ICLDB) 是用于管理 Session Recording 数据库记录的数据库命令行实用程序。此实用程序在 Session Recording 安装期间安装在托管 Session Recording Server 的服务器上的 <Session Recording Server installation path>\Bin 文件夹中。

注意:

如果要使用 ICLDB 管理存储在 Azure 文件共享中的会话录制文件,请运行 SsRecUtils.exe -MountAzureFiles 命令。 SsRecUtils.exe 和 ICLDB 位于同一个文件夹中。

快速参考表

下表列出了 ICLDB 实用程序可用的命令和选项。使用以下格式键入命令:

ICLDB [VERSION | LOCATE | DORMANT | IMPORT | ARCHIVE | REMOVE | REMOVEALL] command-options [/L] [/F] [/S] [/?]

注意:

与此实用程序关联的帮助中提供了更多详细说明。要访问帮助,请在命令提示符下键入 \Program Files\Citrix\SessionRecording\Server\Bin 文件夹,然后键入 icldb /?。要访问特定命令的帮助,请键入 icldb <specific command> /?

命令 说明
ARCHIVE 存档您指定的会话录制文件。您可以使用 FILEID 参数指定要存档的目标会话录制文件。您也可以使用 RETENTION 参数以及 FILTER 或 RULES 参数指定目标会话录制文件。在第二种情况下,RETENTION 参数是必需的。它允许您处理早于指定保留期限的会话录制文件。有效保留期限至少为 2 天。因此,请将 RETENTION 设置为 2 或更大的值,以满足您的需求。FILTER 和 RULES 参数是可选的。FILTER 参数允许您使用 *? 通配符筛选文件路径。RULES 参数通过严格按照 /RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"]; 格式组合多个过滤器来设置高级过滤器。有关详细信息,请参阅此表后面的 ICLDB ARCHIVE 和 ICLDB REMOVE 命令的 RULES 参数 。不能同时使用 RULES 参数和 FILTER 参数。如果添加了 FILTER 或 RULES 参数,则仅处理同时满足 RETENTION 和 FILTER 或 RULES 条件的会话录制文件。可以将录制文件和事件存档在录制文件中。这些事件将在 ArchivedEvent 数据库表中存档。ICLDB ARCHIVE 命令示例:ICLDB ARCHIVE /RETENTION:<days> [/LISTFILES] [/MOVETO:<dir>] [/NOTE:<note>] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?]
DORMANT 显示或清点被认为已休眠或无响应的实时录制文件。如果经过一段指定时间后没有向录制文件写入任何新数据,则该实时录制被视为无响应或已休眠。您可以使用 FILEID 参数指定目标会话录制文件。您还可以检查是整个数据库的会话录制文件都进入休眠,还是只有指定天数、小时数或分钟数内创建的录制文件进入休眠。对于时间参数(DAYS、HOURS 和 MINUTES),一次只能指定一个参数。您可以通过附加 CLOSEFILES 参数来手动关闭无响应或已休眠的实时录制。您也可以在 Session Recording Server Properties(Session Recording Server 属性)的 Storage(存储) 选项卡上设置时间阈值,以便在超过阈值时自动关闭无响应或已休眠的实时录制 。有关详细信息,请参阅下文中的关闭无响应或已休眠的实时录制
IMPORT 将会话录制文件导入 Session Recording 数据库。此命令用于在丢失数据库录制时重建数据库。此外,此命令还用于合并数据库(如果您有两个数据库,则可以导入其中一个数据库中的文件)。2303 版本在 IMPORT 命令中引入了 RELOCATE 参数。如果不使用 RELOCATE 参数,IMPORT 命令会完整地解析会话录制文件,这需要时间。如果使用 RELOCATE 参数,IMPORT 命令只需找到会话录制文件的数据库记录并直接更新其文件路径。ICLDB IMPORT 命令示例:ICLDB IMPORT [/LISTFILES] [/RECURSIVE] [/RELOCATE] [/L] [/F] [/S] [/?] [<file>] [<directory>]
LOCATE 将会话录制文件 ID 用作条件查找并显示该文件的完整路径。查找会话录制文件的存储位置时可使用此命令。此命令还可用于通过特定文件来验证数据库是否为最新。ICLDB LOCATE 命令示例:ICLDB LOCATE /FILEID:<id> [/L] [/F] [/S] [/?]
REMOVE 从数据库中删除对会话录制文件的引用。此命令用于清理数据库(使用时需谨慎)。也可以删除关联的物理文件。使用 REMOVE 命令时,您可以使用 FILEID 参数指定目标会话录制文件,也可以使用 RETENTION 参数以及 FILTER 或 RULES 参数指定目标会话录制文件。在第二种情况下,RETENTION 参数是必需的。它允许您处理早于指定保留期限的会话录制文件。有效保留期限至少为 2 天。因此,请将 RETENTION 设置为 2 或更大的值,以满足您的需求。FILTER 和 RULES 参数是可选的。FILTER 参数允许您使用 *? 通配符筛选文件路径。RULES 参数通过严格按照 /RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"]; 格式组合多个过滤器来设置高级过滤器。有关详细信息,请参阅此表后面的 ICLDB ARCHIVE 和 ICLDB REMOVE 命令的 RULES 参数 。不能同时使用 RULES 参数和 FILTER 参数。如果添加了 FILTER 或 RULES 参数,则仅处理同时满足 RETENTION 和 FILTER 或 RULES 条件的会话录制文件。ICLDB REMOVE 命令示例:ICLDB REMOVE /RETENTION:<days> [/LISTFILES] [/DELETEFILES] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?]
REMOVEALL 从 Session Recording 数据库中删除对会话录制文件的所有引用,并将数据库返回原始状态。不会删除实际物理文件;但您无法在 Session Recording Player 中搜索这些文件。此命令用于清理数据库(使用时需谨慎)。只能通过从备份中恢复来还原删除的引用。
VERSION 显示 Session Recording 数据库架构版本。
/L 将结果和错误记录到 Windows 事件日志。
/F 强制运行命令而不提示。
/S 不显示版权信息。
/? 显示命令的帮助。

ICLDB ARCHIVE 和 ICLDB REMOVE 命令的 RULES 参数

RULES 参数通过严格按照 /RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"]; 格式组合多个过滤器来设置高级过滤器,其中:

  • FIELD 设置带字段的过滤器,字段可以是 pathusergroupdeliverygroupapplicationserverclient,也可以是名为 dbo.ICLFile 的数据库表中的任何其他列。

  • In 表示必须至少满足括号中的一个过滤条件。录制文件才能成为操作对象。

  • NotIn 表示满足括号中的任何过滤条件的录制文件都被排除在操作之外。

  • CONDITION” 设置一个过滤条件,其中包含名为 dbo.ICLFile 的数据库表中的记录(或行)。

  • 必须按 <domain>.<name> 格式输入用户和组记录。

  • 可以使用 Windows 通配符筛选路径记录。

  • 必须用双引号 ("") 将每个 CONDITION 项目括起来,并用逗号 , 分隔两个 CONDITION 项目。

  • 除非 “CONDITION” 项本身包含空格,否则输入 “CONDITION” 项时请勿添加空格。

  • 如果 “CONDITION” 项包含一个或多个逗号,请用双引号引起 “CONDITION” 项,后跟转义的双引号 """ """

  • 可以在各种组合中使用多个过滤器。每个过滤器都以分号 (;) 结尾。

  • AND 逻辑运算符用于计算多个过滤器。 过滤器的数量没有限制,但 RULES 的总长度不得超过 2048 字节。

示例:

  • /RULES:group-In-["BUILTIN.Guests"];
  • /RULES:path-In-["S:\SessionRecordings\2023*"];group-NotIn-["Mydomain.Suspicious","Mydomain.Persistence"];
  • /RULES:deliverygroup-In-["RdsDesktopAndAppGroup"];user-In-["Mydomain.AdminA","""Mydomain.Admin,,,B"""];
  • /RULES:EndReasonID-In-["1","2"];

存档会话录制文件

要在录制件存储位置保留充足的备用磁盘容量,请定期存档会话录制文件。存档时间间隔因可用磁盘空间量和录制文件的典型大小而异。会话录制文件保留时间必须晚于开始录制日期超过两天才能进行存档。此规则是为了防止任何正在进行的录制还未完成即被存档。

可以采用两种方法来存档会话录制件。可以将录制文件的数据库记录更新为“已存档”状态,同时文件仍保留在录制件存储位置。使用此方法可以减少在 Player 中出现的搜索结果。另一种方法是将录制文件的数据库记录更新为“已存档”状态,同时将文件从录制件存储位置移至另一个位置以便备份到备用介质。当移动会话录制文件时,ICLDB 实用程序将这些文件移至指定的目录,在此位置不再使用年/月/日形式的原始文件文件夹结构。

Session Recording 数据库中的会话录制记录包含两个与存档相关的字段:存档时间和存档注释。存档时间表示录制文件的当前存档日期和时间。存档注释是可选的文本注释,可以在存档期间添加。这两个字段指示录制件已存档和存档时间。

在 Session Recording Player 中,存档的会话录制件都会显示“已存档”状态以及存档日期和时间。如果尚未移动已存档的会话录制件,则仍可以播放这些文件。如果在存档过程中移动了会话录制文件,则在要播放该文件时会显示“未找到文件”错误。此时,必须还原会话录制文件才能播放会话。要还原会话录制文件,请提供录制文件的文件 ID 和存档时间。在下面的还原会话录制文件部分详细介绍了如何还原存档文件。

ICLDB 实用程序的 ARCHIVE 命令具有多个参数,如下所述:

  • /FILEID:<id> - 允许您指定目标会话录制文件。可以在 Session Recording player (Windows) 中查看会话录制文件的 ID。也可以使用录制文件名作为文件 ID。

  • /RETENTION:<days> - 会话录制件的保留期限(天)。保留时间超过指定天数的录制件会在 Session Recording 数据库中被标记为“已存档”。保留期限必须是大于或等于 2 天的整数。

  • /FILTER:<filter>:允许您使用 *? 通配符筛选文件路径。FILTER 参数为可选参数。如果添加了 FILTER 参数,则仅存档同时满足 RETENTION 和 FILTER 条件的那些会话录制文件。
  • /RULES:<advanced filters>:可以严格按照 /RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"]; 格式通过组合多个过滤器来设置高级过滤器。不能同时使用 RULES 参数和 FILTER 参数。有关详细信息,请参阅本文前面的 ICLDB ARCHIVE 和 ICLDB REMOVE 命令的 RULES 参数部分。

  • /LISTFILES - 列出存档会话录制文件时这些文件的完整路径和文件名。此参数为可选设置。

  • /MOVETO:<directory> - 以物理方式将存档的会话录制文件移至的目录。指定的目录必须存在。此参数为可选设置。如果未指定目录,则文件仍保留在其原始存储位置。

  • /NOTE:<note> - 在数据库记录中为存档的每个会话录制件添加的文本注释。注释两边务必加上双引号。此参数为可选设置。

  • /L - 将结果和错误记录到 Windows 事件日志,并记录存档的会话录制文件数。此参数为可选设置。

  • /F - 强制运行 archive 命令而不显示提示。此参数为可选设置。

在 Session Recording 数据库中存档会话录制件并以物理方式移动会话录制文件

  1. 以本地管理员身份登录安装了 Session Recording Server 的服务器。

  2. 启动命令提示窗口。

  3. 从当前工作目录转到 Session Recording Server 安装路径的 Bin 目录 (<Session Recording server Installation Path>\Bin)。

  4. 运行 ICLDB ARCHIVE /RETENTION:<days> [/LISTFILES] [/MOVETO:<dir>] [/NOTE:<note>] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?] 命令。方括号中的参数是可选参数。运行命令时请删除方括号。不能同时使用 RULES 参数和 FILTER 参数。days 是会话录制文件的保留期限,directory 是存档的会话录制文件移至的目录,note 是在数据库记录中为正在存档的每个会话录制文件添加的文本注释。输入 Y 以确认存档。

仅在 Session Recording 数据库中存档会话录制件

  1. 以本地管理员身份登录安装了 Session Recording Server 的服务器。

  2. 启动命令提示窗口。

  3. 从当前工作目录转到 Session Recording Server 安装路径的 Bin 目录(<Session Recording Server 安装路径>\Bin)。

  4. 运行 ICLDB ARCHIVE /RETENTION:<days> [/LISTFILES] [/NOTE:<note>] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?] 命令。方括号中的参数是可选参数。运行命令时请删除方括号。不能同时使用 RULES 参数和 FILTER 参数。days 是会话录制文件的保留期限,note 是在数据库记录中为正在存档的每个会话录制文件添加的文本注释。输入 Y 以确认存档。

还原会话录制文件

要查看在 Session Recording 数据库中存档并从录制文件存储位置移出的录制文件,请将其还原。如果在存档期间未从录制件存储位置移走存档的录制件,则仍可在播放器中访问这些录制件。

可以采用两种方法来还原已移走的会话录制文件。将所需的会话录制文件复制到存档文件的还原目录。或者,使用 ICLDB 实用程序将所需的会话录制文件导回 Session Recording 数据库。我们建议采用第一种方法还原存档的会话录制文件。将存档的文件复制到存档文件的还原目录后,如果不再需要,可将其删除。

在会话录制文件的原始存储位置未找到该文件时,Session Recording Broker 将使用归档文件的还原目录。播放器请求要播放的会话录制文件时会出现这种情况。Session Recording Broker 将先尝试在原始存储位置查找会话录制文件。如果在原始存储位置未找到该文件,则 Session Recording Broker 将检查归档文件的还原目录。如果该文件在还原目录中,则 Session Recording Broker 将其发送到播放器以进行播放。如果未找到该文件,则 Session Recording Broker 将向播放器发送“未找到文件”错误。

导入存档的录制文件会使用文件中的会话录制信息(包括新存储路径)来更新 Session Recording 数据库。导入存档的会话录制文件不会将该文件移回录制会话时的原始存储位置。

注意: 导入的会话录制文件在 Session Recording 数据库中的存档时间和存档注释会被清除。下一次运行 ICLDB ARCHIVE 命令,导入的会话录制文件可能会重新变为“已存档”。

ICLDB IMPORT 命令对于导入大量存档的录制文件很有用。它可以修复或更新 Session Recording 数据库中不正确和缺失的会话录制数据。将会话录制文件从一个存储位置移动到 Session Recording Server 上的另一个存储位置时非常有用。可以使用 ICLDB IMPORT 命令在运行 ICLDB REMOVEALL 命令后在 Session Recording 数据库中重新填充会话录制件。

ICLDB 实用程序的 IMPORT 命令有几个参数可用于还原存档的录制文件:

  • /LISTFILES - 列出导入会话录制文件时这些文件的完整路径和文件名。此参数为可选设置。

  • /RECURSIVE - 在所有子目录中搜索会话录制文件。此参数为可选设置。

  • /RELOCATE - 如果不使用 RELOCATE 参数,IMPORT 命令会完整地解析会话录制文件,这需要时间。如果使用 RELOCATE 参数,IMPORT 命令只需找到会话录制文件的数据库记录并直接更新其文件路径。

  • /L - 将结果和错误记录到 Windows 事件日志,并记录导入的会话录制文件数。此参数为可选设置。

  • /F - 强制运行 IMPORT 命令而不显示提示。此参数为可选设置。

注意:

ICLDB 实用程序的 IMPORT 命令还提供了一个可选参数 RELOCATE,您可以使用该参数重新定位录制文件。有关详细信息,请参阅本文中的重新定位会话录制文件部分。

使用存档文件的还原目录来还原会话录制文件

  1. 以本地管理员身份登录安装了 Session Recording Server 的服务器。

  2. 在“Session Recording Player 属性”中,确定已存档的会话录制文件的文件 ID 和存档时间。

  3. 使用在“Session Recording Player 属性”中指定的文件 ID 在备份中找到会话录制文件。每个会话录制件的文件名为 i_<FileID>.icl,其中,FileID 是会话录制文件的 ID。

  4. 将备份中的会话录制文件复制到存档文件的还原目录。要确定存档文件的还原目录,请执行以下操作:

    1. 开始菜单中,依次选择开始 > 所有程序 > Citrix > Session Recording Server 属性

    2. Session Recording Server 属性中,单击存储选项卡。当前还原目录将显示在存档文件的还原目录字段中。

使用 ICLDB IMPORT 命令还原会话录制文件

  1. 以本地管理员身份登录安装了 Session Recording Server 的服务器。

  2. 启动命令提示窗口。

  3. 从当前工作目录转到 Session Recording Server 安装路径的 Bin 目录 (<Session Recording server installation path>\Bin)。

  4. 执行以下操作之一:

    • 运行 ICLDB IMPORT /LISTFILES /RECURSIVE /L <directory> 命令,其中,directory 是一个或多个用空格分隔且包含会话录制文件的目录的名称。输入 Y 以确认导入。

    • 运行 ICLDB IMPORT /LISTFILES /L <file> 命令,其中,file 是一个或多个用空格分隔的会话录制文件的名称。可以使用通配符来指定会话录制文件。输入 Y 以确认导入。

重新定位会话录制文件

可以将会话录制文件移动到不同的存储路径以实现负载平衡或其他目的。为确保文件仍然可以播放,必须将其新路径更新到 Session Recording 数据库。为此,请使用 ICLDB IMPORT 命令。要加快导入过程,请将 RELOCATE 参数附加到 ICLDB IMPORT 命令中。

注意:

RELOCATE 参数为可选参数。如果不使用 RELOCATE 参数,ICLDB IMPORT 命令会完整地解析会话录制文件,这需要时间。如果使用 RELOCATE 参数,ICLDB IMPORT 命令只需找到会话录制文件的数据库记录并直接更新其文件路径。

以下步骤说明了如何使用 RELOCATE 参数更新 Session Recording 数据库的新文件路径。

  1. 请根据需要将会话录制文件移动到不同的存储路径。

  2. 以本地管理员身份登录安装了 Session Recording Server 的服务器。

  3. 启动命令提示窗口。

  4. 从当前工作目录转到 Session Recording Server 安装路径的 Bin 目录 (<Session Recording server installation path>\Bin)。

  5. 执行以下操作之一:

    • 运行 ICLDB IMPORT /LISTFILES /RECURSIVE /RELOCATE /L <directory> 命令,其中,directory 是一个或多个用空格分隔且包含会话录制文件的目录的名称。输入 Y 以确认导入。

    • 运行 ICLDB IMPORT /LISTFILES /RELOCATE /L <file> 命令,其中,file 是一个或多个用空格分隔的会话录制文件的名称。可以使用通配符来指定会话录制文件。输入 Y 以确认导入。

注意:

  • RELOCATE 参数假设 Session Recording 数据库中已经有会话录制文件的记录。
  • 会话录制文件在移动之前必须可播放。否则,RELOCATE 参数不起作用。
  • 会话录制文件的新存储路径必须可被 Session Recording Server 识别。您可以在 Session Recording Server 属性存储选项卡上尝试。

关闭无响应或已休眠的实时录制

默认情况下,如果在 24 小时内没有向录制文件写入任何新数据,则实时录制被视为无响应或已休眠。您可以在 Session Recording Server Properties(Session Recording Server 属性)的 Storage(存储) 选项卡上配置此时间阈值,以便在超过此阈值时自动关闭无响应或已休眠的实时录制 。您可以设置的最小值为 12(小时)。

设置录制文件休眠时间

您还可以使用 ICLDB DORMANT 命令手动关闭无响应或已休眠的实时录制,例如:

ICLDB DORMANT [/DAYS:<days> | /HOURS:<hours> | /MINUTES:<minutes> | /FILEID:<id>] [/LISTFILES] [/CLOSEFILES] [/L] [/F] [/S] [/?]
<!--NeedCopy-->

FILEID 参数允许您指定目标会话录制文件,CLOSEFILES 参数允许您手动关闭您指定的无响应或已休眠的实时录制。

提示:

可以在 Session Recording player (Windows) 中查看会话录制文件的 ID。也可以使用录制文件名作为文件 ID。