管理录制文件

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 | REPAIR] 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 显示会话录制数据库架构版本。
REPAIR 修复因文件头中缺少数据而损坏的录制文件。修复后的文件可在 %AppData%\Citrix\SessionRecording\Restore 中找到。
/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 实用程序会将它们移动到指定目录,其中原始文件文件夹结构 年/月/日 不再存在。

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

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

ICLDB 实用程序的 ARCHIVE 命令有几个参数,描述如下:

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

  • /RETENTION:<days> - 会话录制的保留期(天)。超过指定天数的录制内容在会话录制数据库中标记为已存档。保留期必须是大于或等于 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 – 强制存档命令在没有提示的情况下运行。此参数是可选的。

在会话录制数据库中存档会话录制内容并物理移动会话录制文件

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

  2. 启动命令提示符。

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

仅在会话录制数据库中存档会话录制内容

  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 确认导入。

重新定位会话录制文件

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

注意:

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

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

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

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

  3. 启动命令提示符。

  4. 将当前工作目录更改为 Session Recording 服务器安装路径的 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 参数将不起作用。
  • 会话录制文件的新存储路径必须可由会话录制服务器识别。您可以在会话录制服务器属性存储选项卡上尝试这些路径。

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

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

设置录制文件休眠时间

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

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

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

提示:

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