你好,
你描述的情况确实是典型的 LVR 元数据冲突导致跨站点组成员属性无法正常复制。因为多值属性(如 member)在 LVR 下是以单个链接值的形式进行复制,如果某个 DC 在恢复后出现了孤立的 metadata 或者 USN 链断层,就会导致部分值被丢弃。
在不进行 DC demote/promote 的前提下,业界标准做法是通过 repadmin 和 ADReplicationAttributeMetadata 来精准定位并强制重同步。具体思路如下:
首先,用 repadmin /showobjmeta <DCName> "<DN of group>" 来查看该组对象在不同 DC 上的属性元数据,确认哪些 member 链接值的版本号或 USN 出现 mismatch。你也可以用 PowerShell 的 Get-ADReplicationAttributeMetadata -Object <DN> -Server <DCName> 来更直观地比对。
一旦确认冲突的链接值,可以使用 repadmin /removelingeringobjects <DestDC> <SourceDC> <NC> 来清理孤立对象,或者针对组对象执行 repadmin /reconcile <DCName> <DN> 来强制重建 LVR 链接。需要注意的是,/reconcile 在 Windows Server 2012 R2 及以上版本才可用,并且仅对多值属性的 LVR 有效。
如果只是部分成员属性不同步,另一种常见做法是通过 PowerShell 脚本批量导出源 DC 上的组成员,再在目标 DC 上重新写入,从而触发新的 LVR 链接。例如:
powershell
$group = Get-ADGroup "CN=TestGroup,OU=Groups,DC=contoso,DC=com" -Server SourceDC -Properties member
$group.member | ForEach-Object {
Add-ADGroupMember -Identity $group.DistinguishedName -Members $_ -Server DestDC
```}
这样会重新生成链接值并触发复制,避免 metadata mismatch。
最后,建议在修复后运行 repadmin /replsummary 和 repadmin /showrepl * /csv 来确认跨站点复制链路完全恢复,没有 lingering objects 或者 pending replication。
我需要强调一点:如果冲突范围过大,或者涉及到多个 DC 的 LVR 元数据严重不一致,微软官方推荐的最佳实践仍然是考虑 demote/promote 受影响的 DC,因为这是最彻底的方式。但在你要求的前提下,上述方法是目前最标准的修复流程。希望这里的内容对您有所帮助。如果您觉得它让您对该问题有了更深入的了解,欢迎采纳该回答。如有其他疑问,请随时留言。祝您生活愉快!
HL.