Session Recording

管理录制文件

ICA 日志数据库 (ICLDB) 是一个数据库命令行实用程序,用于操作会话录制数据库记录。此实用程序在会话录制安装期间安装到托管会话录制服务器的服务器上的 <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 参数手动关闭无响应或休眠的实时录制文件。您还可以在会话录制服务器属性存储选项卡上设置时间阈值,以便在超过阈值时自动关闭无响应或休眠的实时录制文件。有关详细信息,请参阅本文后面的 关闭无响应或休眠的实时录制文件
IMPORT 将会话录制文件导入到会话录制数据库。如果数据库记录丢失,请使用此命令重建数据库。此外,还可以使用此命令合并数据库(如果您有两个数据库,可以从其中一个数据库导入文件)。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 从会话录制数据库中删除对会话录制文件的所有引用,并将数据库恢复到其原始状态。实际的物理文件不会被删除;但是,您无法在会话录制播放器中搜索这些文件。使用此命令(请谨慎操作)清理数据库。只有通过从备份还原才能撤销已删除的引用。
VERSION 显示会话录制数据库架构版本。
/L 将结果和错误记录到 Windows 事件日志中。
/F 强制命令在没有提示的情况下运行。
/S 禁止显示版权信息。
/? 显示命令的帮助信息。

The RULES parameter for ICLDB ARCHIVE and ICLDB REMOVE commands

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

  • FIELD” sets a filter with a field, which can be “path”, “user”, “group”, “deliverygroup”, “application”, “server”, “client”, or any other column in the database table called dbo.ICLFile.

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

  • NotIn”表示满足括号中任何筛选条件的录制文件将从操作中排除。

  • CONDITION”使用名为 dbo.ICLFile 的数据库表中的记录(或行)设置筛选条件。

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

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

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

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

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

  • 可以以各种组合方式使用多个筛选器。每个筛选器以分号 (;) 结尾。

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

示例:

  • /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"];

归档会话录制文件

为了在录制存储位置保持充足的备用磁盘容量,需要定期归档会话录制文件。归档间隔会根据可用的磁盘空间量以及录制文件的典型大小而有所不同。会话录制文件必须在其开始日期之后超过两天,方可进行归档。此规则旨在避免任何正在进行的实时录制在尚未完成之前就被归档。

归档会话录制时有两种可用方法。可以更新录制文件的数据库记录,使其状态为已归档,同时文件保留在录制存储位置。此方法可用于减少播放器中的搜索结果。另一种方法是将录制文件的数据库记录更新为已归档状态,并将文件从录制存储位置移动到另一个位置以备份到备用介质。移动会话录制文件时,ICLDB 实用程序会将它们移动到指定目录,其中不再存在原始文件文件夹结构 年/月/日

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

在会话录制播放器中,已归档的会话录制显示“已归档”状态以及归档日期和时间。如果文件未移动,则已归档的会话录制可能仍可播放。如果在归档期间移动了会话录制文件,则会显示“文件未找到”错误。必须先恢复会话录制文件,然后才能播放会话。要恢复会话录制文件,请提供录制文件的文件 ID 和归档时间。有关恢复已归档文件的更多信息,请参阅以下恢复会话录制文件部分。

ICLDB 实用程序的 ARCHIVE 命令具有以下几个参数:

  • /FILEID:<id> - 允许您指定目标会话录制文件。您可以在会话录制播放器 (Windows) 中检查会话录制文件的 ID。录制文件名也可以用作文件 ID。

  • /RETENTION:<days> - 会话录制的保留期(天)。早于指定天数的录制在会话录制数据库中标记为已归档。保留期必须是大于或等于 2 天的整数。

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

  • /LISTFILES – 列出正在存档的会话录制文件的完整路径和文件名。此参数是可选的。

  • /MOVETO:<目录> - 实际移动已存档会话录制文件的目录。指定的目录必须存在。此参数是可选的。如果未指定目录,文件将保留在其原始存储位置。

  • /NOTE:<备注> - 添加到每个已存档会话录制的数据库记录中的文本备注。确保备注用双引号括起来。此参数是可选的。

  • /L – 将已存档会话录制文件数量的结果和错误记录到 Windows 事件日志中。此参数是可选的。

  • /F – 强制存档命令在没有提示的情况下运行。此参数是可选的。

在会话录制数据库中归档会话录制,并实际移动会话录制文件

  1. 以本地管理员身份登录到安装了会话录制服务器的服务器。

  2. 启动命令提示符。

  3. 将会话录制服务器安装路径 (<Session Recording server Installation Path>\Bin) 的当前工作目录更改为 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 以确认存档。

仅在会话录制数据库中进行会话录制归档

  1. 以本地管理员身份登录到安装了会话录制服务器的服务器。

  2. 启动命令提示符。

  3. 将当前工作目录更改为会话录制服务器安装路径的 Bin 目录 (<会话录制服务器安装路径>\Bin)。

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

恢复会话录制文件

要查看归档在会话录制数据库中并已从录制存储位置移出的录制文件,请将其恢复。在归档期间未从录制存储位置移出的已归档会话录制仍可在播放器中访问。

有两种方法可用于恢复已移动的会话录制文件。将所需的会话录制文件复制到归档文件的恢复目录。或者,使用 ICLDB 实用程序将所需的会话录制文件重新导入到会话录制数据库。我们建议使用第一种方法恢复已归档的会话录制文件。当您不再需要时,请删除复制到归档文件恢复目录中的归档文件。

当会话录制文件在其原始存储位置中找不到时,会话录制代理会使用“归档文件恢复目录”。这种情况发生在播放器请求会话录制文件进行播放时。会话录制代理首先尝试在原始存储位置中查找会话录制文件。如果在原始存储位置中找不到该文件,则会话录制代理会检查“归档文件恢复目录”。如果文件存在于恢复目录中,则会话录制代理会将文件发送到播放器进行播放。如果找不到文件,则会话录制代理会向播放器发送文件未找到错误。

导入归档的录制文件会使用该文件中的会话录制信息来更新会话录制数据库,其中包含新的存储路径。导入归档的会话录制文件并不会将文件移回会话录制时所在的原始存储位置。

注意: 导入的会话录制文件在会话录制数据库中已清除归档时间和归档备注。下次运行 ICLDB ARCHIVE 命令时,导入的会话录制文件可能会再次归档。

ICLDB IMPORT 命令可用于导入大量归档的录制文件。它可以修复或更新会话录制数据库中不正确和缺失的会话录制数据。它还可用于将会话录制文件从会话录制服务器上的一个存储位置移动到另一个存储位置。运行 ICLDB REMOVEALL 命令后,您可以使用 ICLDB IMPORT 命令将会话录制重新填充到会话录制数据库中。

ICLDB 实用程序的 IMPORT 命令有几个参数可用于恢复归档的录制文件:

  • /LISTFILES – 列出正在导入的会话录制文件的完整路径和文件名。此参数是可选的。

  • /RECURSIVE – 搜索所有子目录以查找会话录制文件。此参数是可选的。

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

  • /L – 将导入的会话录制文件的数量的结果和错误记录到 Windows 事件日志中。此参数是可选的。

  • /F – 强制 IMPORT 命令在没有提示的情况下运行。此参数是可选的。

注意:

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

通过使用存档文件的恢复目录来恢复会话录制文件

  1. 以本地管理员身份登录到安装了会话录制服务器的服务器。

  2. 在“会话录制播放器属性”中,确定存档会话录制文件的文件 ID 和存档时间。

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

  4. 将会话录制文件从您的备份复制到存档文件的恢复目录。要确定存档文件的恢复目录:

    1. 从“开始”菜单中,选择“开始”>“所有程序”>“Citrix®”>“会话录制服务器属性”。

    2. 在“会话录制服务器属性”中,选择“存储”选项卡。当前还原目录显示在“存档文件的还原目录”字段中。

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

  1. 以本地管理员身份登录到安装了会话录制服务器的服务器。

  2. 启动命令提示符。

  3. 将当前工作目录更改为会话录制服务器安装路径的 Bin 目录 (<Session Recording server installation path>\Bin)。

  4. 执行以下操作之一:

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

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

重新定位会话录制文件

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

注意:

RELOCATE 参数是可选的。如果没有 RELOCATE 参数,ICLDB IMPORT 命令会完整解析会话录制文件,这会耗费时间。使用 RELOCATE 参数时,ICLDB IMPORT 命令只会定位会话录制文件的数据库记录并直接更新其文件路径。

以下步骤说明如何使用 RELOCATE 参数将会话录制数据库中的文件路径更新为新路径。

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

  2. 以本地管理员身份登录到安装了会话录制服务器的服务器。

  3. 启动命令提示符。

  4. 将当前工作目录更改为会话录制服务器安装路径的 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 参数假定会话录制数据库中已存在会话录制文件的记录。
  • 会话录制文件在移动之前必须是可播放的。否则,RELOCATE 参数将不起作用。
  • 会话录制文件的新的存储路径必须可由 Session Recording 服务器识别。您可以在会话录制服务器属性存储选项卡上尝试这些路径。

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

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

设置录制文件休眠时间

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

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

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

提示:

您可以在 Session Recording 播放器 (Windows) 中检查会话录制文件的 ID。录制文件名也可以用作文件 ID。