Lingering Object Liquidator 工具的说明

本文介绍用于查找和删除挥发对象的Lingering Object Liquidator (LoL) 工具。

原始 KB 数: 3141939

简介

Lingering Object Liquidator (LOL) 是一种工具,用于自动发现和删除挥之不去的对象。 该工具使用 DRSReplicaVerifyObjects 方法,该方法由 repadmin /removelingeringobjects 命令和 repldiag 工具与 LDP.EXE 使用的 removeLingeringObject rootDSE 基元结合使用。

优点和可用性

  • 合并发现和删除一个接口中挥之不去的对象。
  • 该工具可从 Microsoft下载中心获取。

关键功能

  • 删除所有域控制器(DC)中的所有挥发对象,而不会提示。
  • 对林中的每个 DC 执行 (n * (n-1)比较。
  • 执行拓扑检测,以便选取并选择用于延迟对象比较的 DC(源和目标)。
  • 将挥之不去的对象列表导出为 CSV 文件,以便脱机编辑对象,然后导入回工具,以便在必要时删除对象(适用于高级删除操作)。
  • 将对象的内容保存在日志文件中,以防必须从挥之不去的对象中解冻新对象。

工具要求

  • 在要从中删除挥发对象的林中的 DC 或成员计算机上下载并运行 Lingering Object Liquidator。

  • 必须在运行该工具的计算机上安装Microsoft .NET Framework 4.5.2。

  • 权限:运行该工具的用户帐户必须具有执行计算机所在的林中每个域的域管理员凭据。 默认情况下,企业管理员组的成员在林中的所有域中都有域管理员凭据。 域管理员凭据在单个域或单个域林中已足够。

  • 必须在需要扫描的任何 DC 上启用远程事件日志管理(RPC)防火墙规则。 否则,该工具将返回“异常:RPC 服务器不可用”错误。

    启用了防火墙规则的远程事件日志管理(RPC)属性窗口的屏幕截图。
    “延迟对象检测”窗口的屏幕截图,其中显示了“异常:RPC 服务器不可用”错误。
  • 不支持清理 Active Directory 轻型目录服务(AD LDS/ADAM)环境中的挥发对象。

演练

挥之不去的对象检测

以域管理员身份运行该工具(如果要扫描整个林,或者作为企业管理员)。 要设置部门,请按照以下步骤操作。

备注

如果未将该工具作为提升运行,将收到错误 8453。

Lingering Object Liquidator 窗口的屏幕截图。

  1. 在“拓扑检测”部分中,选择“ 检测 AD 拓扑”。

    通过查询本地 DC 来检测 AD 拓扑填充命名上下文引用 DC目标 DC 列表。 彻底 检测对所有 DC 进行更详尽的搜索,并利用 DC 定位符和 DSBind 调用。 请注意,如果一个或多个 DC 无法访问,彻底检测可能会失败。

  2. 以下是“挥之不去的对象”选项卡上的字段:

    命名上下文

    它包含林中的每个 Active Directory 命名上下文。

    “挥发对象”选项卡上的“命名上下文”字段的屏幕截图。

    参考 DC

    这是要与目标 DC 进行比较的 DC。 引用 DC 承载分区的可写副本。

    “挥发对象”选项卡上的“引用 DC”字段的屏幕截图。

    备注

    即使它们不适合作为引用 DC(ChildDC2 是 RODC,并且不是有效的引用 DC,因为它不承载 DC 的可写副本),也会显示林中的所有 DC。

    目标 DC

    要从中删除徘徊对象的目标 DC。

    “挥发对象”选项卡上“目标 DC”字段的屏幕截图。

  3. 选择“ 检测挥发对象 ”以使用所选 DC 进行比较,或选择“ 扫描整个林 ”和 “面向所有 DC ”以扫描整个环境。

    当所有字段都留空时,该工具会以成对的方式与所有分区的所有 DC 进行比较。 在大型环境中,此比较将花费大量时间(甚至数天)作为林中所有本地保留分区的操作目标(n * (n-1)数量的 DC。 对于较短的目标操作,请选择命名上下文、引用 DC 和目标 DC。 引用 DC 必须保存所选命名上下文的可写副本。 请注意,单击“停止”实际上不会停止服务器端 API,它只会停止客户端工具中的工作。

    “检测”按钮的“挥发对象 Liquidator”窗口的屏幕截图。

    在扫描期间,禁用了多个按钮,状态框包含来自 Lingering Object Liquidator 工具的诊断和操作消息。 在此执行阶段,该工具在咨询模式下运行,并读取在每个目标 DC 上报告的事件日志数据。

    扫描完成后,状态栏会更新、重新启用按钮,并显示徘徊对象总数。 状态框显示扫描期间发生的所有信息、警告和错误。

    Lingering Object Liquidator 窗口的屏幕截图,其中显示了状态栏上显示的当前挥发对象计数。

    如果在状态窗格中看到错误 1396 或错误 8440,则使用的是该工具的早期 beta 预览版,应更新到最新版本。

    • 如果工具错误地使用 RODC 作为引用 DC,则会记录错误 1396。
    • 当目标引用 DC 不承载分区的可写副本时,将记录错误 8440。

    有关Lingering Object Liquidator 发现方法的说明:

    • 在顾问模式下利用 DRSReplicaVerifyObjects 方法。
    • 针对所有 DC 和所有分区运行。
    • 收集挥之不去的对象事件 ID 1946,并在主内容窗格中显示对象。
    • 可将列表导出到 CSV 进行脱机分析(或修改导入)。
    • 支持从 CSV 导入中导入和删除对象(对无法使用 DRSReplicaVerifyObjects 发现的对象利用)。
    • 支持通过 DRSReplicaVerifyObjects 和 LDAP rootDSE removeLingeringobjects 修改删除对象。

    该工具利用命令使用的 repadmin /removelingeringobjects /Advisory_Mode DRSReplicaVerifyObjects 方法(在顾问模式下)。 除了在每个 DC 上记录的正常咨询模式相关事件外,它还在主内容窗格中显示每个挥之不去的对象。

    Lingering Object Liquidator 窗口的屏幕截图,其中显示了主内容窗格中的挥之不去的对象。

    扫描结果将记录在“结果”窗格中。 所有操作的更多详细信息都记录在 与工具可执行文件相同的目录中的 linger<Date-TimeStamp>.log.txt 文件中。

    导出 ”按钮允许将主窗格中列出的所有挥发对象的列表导出到 CSV 文件中。 在 Excel 中查看文件,根据需要修改,稍后使用 “导入 ”按钮查看对象,而无需执行新的扫描。 如果发现需要删除的已放弃对象(不可使用 DRSReplicaVerifyObjects 发现),则导入功能也很有用。

    有关暂时性挥之不去对象的注释:

    垃圾回收是一个独立的进程,默认情况下每 12 小时在每个 DC 上运行一次。 其作业之一是删除已删除的对象,并将其作为墓碑存在,超过墓碑生存期天数。 有一个滚动 12 小时的时间,即某些 DC 上存在一个有资格进行垃圾回收的对象,但其他 DC 上的垃圾回收进程已经删除了该对象。 这些对象也将报告为工具的挥之不去的对象;但是,无需执行任何操作,因为它们将在下次垃圾回收器进程在 DC 上运行时自动删除。

  4. 有两种支持的方法可以删除检测到的挥发对象。 “removeLingeringObject”方法是指 rootDSE 修改操作,该操作可用于删除单个挥发对象。 “DsReplicaVerifyObjects”方法将同时选择所有挥霍的对象。

    若要删除单个对象,请使用 Ctrl 或 Shift 键选择单个对象或选多个对象。 按 Ctrl 选择多个对象,或 按 Shift 选择一系列对象,然后选择“ 删除所选的挥发对象”。

    Lingering Object Liquidator 窗口的屏幕截图,其中包含用于删除单个对象的“删除”按钮。

    状态栏使用挥之不去的对象和删除操作的状态进行更新:

    Lingering Object Liquidator 的状态栏的屏幕截图。

    该工具在删除之前转储每个对象的属性列表,并将其记录到removedLingeringObjects.log.txt日志文件中对象删除的结果。 此日志文件与工具的可执行文件位于同一位置: C:\tools\LingeringObjects\removedLingeringObjects<DATE-TIMEStamp>.log.txt

    日志文件的示例内容:

    输出
    the obj DN: <GUID=<GUID>>;  <SID=<SID>>;CN=<CN_Name>,OU=<OU_Name>,DC=root,DC=contoso,DC=com  
    objectClass:top, person, organizationalPerson, user;  
    sn:Schenk;  
    whenCreated:20121126224220.0Z;  
    name:<CN_Name>;  
    objectSid:<SID>;primaryGroupID:513;  
    sAMAccountType:805306368;  
    uSNChanged:32958;  
    objectCategory:<GUID=<GUID>>;CN=Person,CN=Schema,CN=Configuration,DC=root,DC=contoso,DC=com;  
    whenChanged:20121126224322.0Z;  
    cn:<CN_Name>;  
    uSNCreated:32958;  
    l:Boulder;  
    distinguishedName:<GUID=<GUID>>;  <SID=<SID>>;CN=<CN_Name>,OU=<OU_Name>,DC=root,DC=contoso,DC=com;  
    displayName:<CN_Name>;  
    st:Colorado;  
    dSCorePropagationData:16010101000000.0Z;  
    userPrincipalName:<User_Name>@root.contoso.com;  
    givenName:<User_Name>;  
    instanceType:0;  
    sAMAccountName:<Account_Name>;  
    userAccountControl:650;  
    objectGUID:<GUID>;  
    value is   :<GUID=<GUID>>:<GUID=<GUID>>
    Lingering Obj CN=<CN_Name>,OU=<OU_Name>,DC=root,DC=contoso,DC=com is removed from the directory, mod response result code = Success  
    ---------------------------------------------  
    RemoveLingeringObject returned Success
    

    识别所有对象后,可以通过选择所有对象,然后删除或导出到 CSV 文件来批量删除它们。 稍后可以再次导入 CSV 文件以执行批量删除。 请注意,有一个 “删除所有 ”按钮,它利用 repadmin /removelingeringobject 了删除对象时挥之不去的方法。

支持:尽管此工具在许多环境中进行了全面测试,但按原样提供给你。 不会提供官方Microsoft支持。

如果要在包含挥发对象的实验室环境中练习使用此工具,请访问 Active DirectoryLingering 对象疑难解答 TechNet 虚拟实验室。

Workflow

“挥发对象”工作流的屏幕截图。

详细信息

删除方法 对象/分区和删除功能 详细信息
挥之不去的对象清算器 每个对象和每分区删除

利用:
- RemoveLingeringObjects LDAP rootDSE 修改
- DRSReplicaVerifyObjects 方法

- 基于 GUI
- 快速显示正在加入执行计算机的林中的所有挥之不去的对象
- 通过 DRSReplicaVerifyObjects 方法进行内置发现
- 用于从所有分区中删除挥之不去的对象的自动化方法
- 从所有 DC(包括 RODC)中删除挥之不去的对象,但不会挥之不去的链接
- Windows Server 2008 及更高版本的 DC(不适用于 Windows Server 2003 DC)
Repldiag /removelingeringobjects 按分区删除

利用:
- DRSReplicaVerifyObjects 方法

- 仅命令行
- 用于从所有分区中删除挥之不去的对象的自动化方法
- 通过 DRSReplicaVerifyObjects 进行内置发现
- 在 DC 上的事件中显示发现的对象
- 不删除挥之不去的链接。 不会从 RODC 中删除挥之不去的对象(尚未删除)。
LDAP RemoveLingeringObjects rootDSE 基元(最常使用 LDP.EXE 或 LDIFDE 导入脚本执行) 每个对象删除
- 需要单独的发现方法
- 删除每个执行中的单个对象,除非已编写脚本。
Repadmin /removelingeringobjects 按分区删除

利用:
- DRSReplicaVerifyObjects 方法

- 仅命令行
- 通过 DRSReplicaVerifyObjects 进行内置发现
- 在 DC 上的事件中显示发现的对象
- 如果需要全面的 (n * (n-1)对清理,则需要执行许多执行。

repldiag 工具和 Lingering Object Liquidator 工具可自动执行此任务。