PowerShell可批量检查域控制器复制状态,通过Get-ADReplicationPartnerMetadata遍历所有DC,捕获LastReplicationResult非0或超时异常,并导出CSV报告。
直接用 powershell 批量检查域内所有域控制器的复制元数据状态,核心是结合 get-adreplicationpartnermetadata 和 get-addomaincontroller,并统一采集、过滤异常(如复制失败、延迟过高、lastreplicationattempt 失败等)。
一、基础命令:单台 DC 的复制元数据检查
在任意一台有 AD 模块的管理机或 DC 上运行:
Get-ADReplicationPartnerMetadata -Target "DC01.contoso.com" -Scope Domain | Select-Object Server, LastReplicationAttempt, LastReplicationResult, LastReplicationSuccess, PartnerAddress, PartnerServer
说明:
• Target 指定要查的 DC(可为 FQDN 或主机名)
• Scope Domain 表示查该 DC 与同域其他 DC 的复制关系(若跨林用 Forest)
• LastReplicationResult = 0 表示成功;非 0(如 8418、8453、1256)代表具体错误码
二、一键遍历全网域控并汇总关键状态
以下脚本自动获取所有域控制器,逐个采集复制元数据,并高亮异常项:
$AllDCs = Get-ADDomainController -Filter * | Select-Object -ExpandProperty HostName
$Results = foreach ($dc in $AllDCs) {
try {
$meta = Get-ADReplicationPartnerMetadata -Target $dc -Scope Domain -ErrorAction Stop
$meta | Select-Object @{n='SourceDC';e={$dc}}, Server, LastReplicationAttempt, LastReplicationResult, LastReplicationSuccess, PartnerServer
} catch {
[PSCustomObject]@{SourceDC=$dc; Server='N/A'; LastReplicationAttempt=$null; LastReplicationResult='ERROR'; LastReplicationSuccess=$null; PartnerServer='N/A'}
}
}
$Results | Where-Object { $_.LastReplicationResult -ne 0 -and $_.LastReplicationResult -ne 'ERROR' } | Format-Table -AutoSize
# 同时导出完整结果到 CSV
$Results | Export-Csv "DC_Replication_Report_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation
关键点:
• 自动发现所有 DC,无需手动列表
• 异常捕获避免因某台 DC 不可达导致整个脚本中断
• 输出中仅显示 LastReplicationResult ≠ 0 的失败项(便于快速定位)
• 同步生成带时间戳的 CSV,含全部原始字段供深入分析
三、进阶判断:识别“隐性延迟”和“假成功”
仅看 LastReplicationResult = 0 不够——还需关注时间维度。常见风险场景:
-
复制成功但严重滞后:检查
LastReplicationSuccess是否超过 15 分钟(默认同步间隔通常为 15s–3min,持续 >10min 即可疑) -
“假成功”陷阱:某些情况下 LastReplicationResult=0,但
LastReplicationAttempt和LastReplicationSuccess时间相差极大(比如 Attempt 是 2 小时前,Success 是昨天),说明最近一次尝试其实失败了,只是没更新 Result 字段 -
PartnerServer 解析失败:若
PartnerServer显示为 IP 或空值,可能 DNS 未正确注册 SRV 记录,影响后续复制
建议在脚本中加入时间校验逻辑(例如:添加计算 (Get-Date) – $_.LastReplicationSuccess 的分钟差,并标红超 10 分钟的记录)。
四、执行前提与注意事项
确保满足以下条件,否则脚本会报错或结果不全:
- 运行环境已安装 ActiveDirectory PowerShell 模块(Windows Server 默认自带;Win10/11 需先安装 RSAT-AD-PowerShell)
- 当前用户具备 域管理员权限 或至少对所有 DC 有 Replication Monitoring 权限
- 所有目标 DC 开启 Windows Remote Management (WinRM),且防火墙放行 5985/5986 端口(
Get-ADReplicationPartnerMetadata底层依赖 WMI/WinRM) - 域内 DNS 正常,各 DC 的
_msdcs和_ldapSRV 记录解析准确
不复杂但容易忽略。跑通一次后,可封装为定时任务每日自动检测并邮件告警。

















