我们的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,虽然我没有使用它: