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

我们的Windows域有3个DC。 其中一个DC正在复制对其他DC进行的更改,但不复制对其自身进行的任何更改。

我们不知道哪个具有最新的AD,所以我们想要比较其他2与不工作的1。

是否可以导出每个对象(OU,CN,用户,组等)的属性,以便我可以比较它们? 也许到一个XML文件?

也许有一个PowerShell或VBScript将做到这一点?

这听起来像你的计划是确定什么DC有最新的变化,然后让他们在另一个DC?

不,不,不,不。

这将会适得其反。 AD不会通过相互之间的变化进行复制,而是通过最新的序列号进行复制。 你需要做的是修复复制。 根据你的Windows版本(你没有告诉我们;这将是有益的),你可以使用REPLMON或REPADMIN来确定什么是失败的,可能是为什么。 Edit-cheekaleak是正确的:DCDIAG也可用于查找DC中的复制和其他错误。

在不复制对其所做更改的服务器上运行dcdiag ,并检查其文件复制服务日志以查找错误。 这应该有助于指导您如何解决复制问题。

症状是挥之不去的物体的典型指标。 如果在域控制器上启用了“严格复制”,并且它从复制邻居中检测到延迟对象,则会阻止来自该邻居的入站更改,直到删除有问题的对象。

在新的Windows Server 2003 SP1域和更高版本中,默认情况下会严格设置复制。

当检测到延迟对象时,事件ID 1988或1388被logging在目录服务事件日志中。 如果域/森林很小(最多只有几个域控制器,且less于50,000个对象),则可以使用repadmin删除延迟的对象。 用于此目的的repadmin在大型AD实现上不可行。

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

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

如果您对报告满意,请在没有advisory_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