如何比较 2 个域控制器上的 Active Directory

如何比较 2 个域控制器上的 Active Directory

我们的 Windows 域有 3 个 DC。其中一个 DC 正在复制其他 DC 上所做的更改,但不会复制其自身上所做的任何更改。

我们不知道哪个 AD 具有最新的,因此我们想将其他 2 个 AD 与不起作用的 AD 进行比较。

是否可以导出每个对象(OU、CN、用户、组等)的属性,以便进行比较?也许导出到 xml 文件?

也许有一个 PowerShell 或 vScript 可以做到这一点?

答案1

听起来你的计划是确定哪个 DC 具有最新的更改,然后在另一个 DC 上进行更改?

不不不不不不。

这会适得其反。AD 不会根据彼此一致的更改进行复制,而是根据最新序列号进行复制。您需要做的是修复复制。根据您的 Windows 版本(您没有告诉我们;这会很有帮助),您可以使用 REPLMON 或 REPADMIN 来确定失败的原因以及可能的原因。编辑 - cheekaleak 是正确的:DCDIAG 还可用于查找 DC 中的复制和其他错误。

答案2

在未复制所做更改的服务器上运行dcdiag,并检查其文件复制服务日志中是否有错误。这应该有助于指导您如何修复复制。

答案3

该症状是延迟对象的典型表现。如果在域控制器上启用了严格复制,并且检测到来自复制邻居的延迟对象,它会阻止来自该邻居的入站更改,直到有问题的对象被删除。

在新的 Windows Server 2003 SP1 域及更高版本中,默认设置严格复制。

当检测到延迟对象时,事件 ID 1988 或 1388 会记录在目录服务事件日志中。如果域/林较小(最多只有几个域控制器和少于 50,000 个对象),则可以使用 repadmin 删除延迟对象。在大型 AD 实施中,为此目的使用 repadmin 是不可行的。

当 * 替换 ServerName 时,以下命令将比较所有域控制器上的指定分区,并记录任何有问题的延迟对象以供删除:

repadmin /removelingeringobjects <ServerName> <ServerGUID> <DirectoryPartition> /advisory_mode  

如果您对报告满意,请运行不带 advisor_mode 开关的命令来执行操作。

解决 Active Directory 复制问题
http://technet.microsoft.com/en-us/library/cc738415%28v=ws.10%29.aspx

事件 ID 1388 或 1988:检测到停留对象
http://technet.microsoft.com/en-us/library/cc949134%28v=ws.10%29.aspx

使用 Repadmin 删除延迟对象
http://technet.microsoft.com/en-us/library/cc949134%28v=ws.10%29.aspx#BKMK_RemoveLingeringObjects

一个类似的工具是 JoeWare 的 GCChk,尽管我没有用过它:

http://www.joeware.net/freetools/tools/gcchk/index.htm

相关内容