1. dcdiag 综合诊断
CMD/PowerShell - dcdiag 常用命令
# 运行全部测试(最全面的诊断)
dcdiag /test:DNS /test:Replication /test:Services /test:SysVolCheck /test:Advertising
# 只运行 DNS 测试
dcdiag /test:DNS /v
# 只运行复制测试
dcdiag /test:Replication
# 只检查 SYSVOL
dcdiag /test:SysVolCheck
# 检查 DC 是否正常播报自身
dcdiag /test:Advertising
# 输出到文件
dcdiag /a /v > C:\temp\dcdiag_output.txt
2. repadmin 复制诊断
CMD - repadmin 常用命令
# 复制摘要
repadmin /replsummary
# 显示 DC01 的所有复制连接
repadmin /showconn DC01.iehang.cn
# 强制所有 DC 全部同步
repadmin /syncall /A /d /e /q
# 显示复制队列
repadmin /queue *
# 检查特定分区复制
repadmin /showrepl * /errorsonly
# 显示所有 DC 列表
repadmin /viewlist *
3. DNS 相关排查
PowerShell - DNS 诊断
# 检查 DNS SRV 记录
Resolve-DnsName "_ldap._tcp.dc._msdcs.iehang.cn" -Type SRV
Resolve-DnsName "DC01.iehang.cn" -Type A
Resolve-DnsName "_kerberos._tcp.dc._msdcs.iehang.cn" -Type SRV
# 检查 DNS 区域是否存在
Get-DnsServerZone -Name "iehang.cn"
# 清除 DNS 缓存
Clear-DnsServerCache -Force
ipconfig /flushdns
# 测试与 DC 的网络连通性
Test-NetConnection -ComputerName "DC01.iehang.cn" -Port 389
Test-NetConnection -ComputerName "DC01.iehang.cn" -Port 135
4. 事件日志分析
PowerShell - AD 相关事件日志
# 查看 DNS 服务器事件(最近 24 小时)
Get-WinEvent -LogName "DNS Server" -MaxEvents 50
# 查看 Directory Service 事件(警告和错误)
Get-WinEvent -LogName "Directory Service" -Level 2,3 -MaxEvents 30
# 查看复制事件
Get-WinEvent -FilterHashtable @{LogName="Directory Service"; ID=1586,1864,1925,1988}
# 查看 NTDS 诊断日志
Get-WinEvent -LogName "DFS Replication" -MaxEvents 20
5. 常用故障代码表
| 事件 ID | 来源 | 含义 | 解决方向 |
|---|---|---|---|
| 2886 | DNS | DNS 动态更新未启用 | 检查 DNS 区域安全设置 |
| 1864 | NTDS Replication | 入站复制失败 | 检查网络和 DNS |
| 1988 | NTDS Replication | 复制入站日志丢失 | 检查 USN 回滚 |
| 1925 | NTDS Replication | 尝试建立复制链接失败 | 检查 KCC 和站点链接 |
| 13508 | DFS Replication | DFS 复制正常建立 | 信息性,无需处理 |
| 13516 | Netlogon | DC 已成功播报 | 正常 |
| 5722 | Netlogon | 计算机账户密码不匹配 | 重置计算机账户(Reset-ComputerMachinePassword) |
6. AD 数据库维护
CMD - 数据库维护
# 联机碎片整理(不中断服务)
ntdsutil dsdb maintenance "activate instance ntds" online defrag to D:\defrag\ntds.dit quit quit
# 查看数据库大小
ntdsutil dsdb maintenance "activate instance ntds" files quit quit
# 离线整理(需要重启进入 DSRM)
ntdsutil "activate instance ntds" files
ntdsutil "activate instance ntds" compact to D:\compact\ntds.dit
# 语义分析(检查数据库完整性)
ntdsutil "activate instance ntds" semantic database analysis go
# 移动数据库文件(需在 DSRM 模式执行)
ntdsutil "activate instance ntds" move db to D:\NTDS move logs to D:\NTDS quit quit
7. 常见问题
Q1:dcdiag 全部通过但用户仍无法登录
检查:1) 时间同步(Kerberos 要求 DC 间时间差 <5 分钟,运行 w32tm /resync);2) 确认用户所在计算机的 DNS 指向正确的 DC;3) 检查 Netlogon 服务是否运行。
Q2:DC 无法启动,如何紧急修复
1) 启动进入 DSRM 模式;2) 使用 wbadmin 恢复系统状态备份;3) 如果没有备份,可以用 ntdsutil 快照恢复(如果有其他 DC);4) 最后手段:强制降级为成员服务器(dcpromo /forceremoval)后重新提升。