dcdiag 是什么
dcdiag 是域控排障的第一件工具:对着指定域控依次跑连通性、广播(Advertising)、复制、服务、DNS、FSMO 角色、时间等一系列测试,把「域控现在到底健不健康」变成一个可读的结论清单。它最实用的地方是能提前发现隐患——很多复制与 DNS 问题在用户报障之前就已经在 dcdiag 输出里出现了。
基本信息
| 适用平台 | Windows Server 域控(AD DS 角色),CMD 运行 |
|---|---|
| 基本语法 | dcdiag [/s:服务器名] [/v] [/q] [/test:测试名] |
| 常用开关 | /v 详细输出、/q 只显示错误、/test: 指定单项测试、/fix 尝试修复部分问题 |
| 常跑测试 | Connectivity、Advertising、Replications、Services、DNS、SysVolCheck、MachineAccount、KnowsOfRoleHolders |
| 权限要求 | 建议以域管理员身份运行,普通用户下多项测试会被跳过 |
| 输出量 | 默认输出已不短,加 /v 会非常长,建议重定向到文件 |
| 日志位置 | 可与事件日志交叉验证:目录服务日志与 DNS 服务器日志 |
典型使用场景
- 日常体检:定期对全部域控跑一遍,留存对比基线
- 复制异常:先 dcdiag 再 repadmin,判断是局部问题还是拓扑问题
- DNS 排障:/test:dns 检查 SRV 记录、转发器与动态更新
- 角色转移前后:确认源与目标域控的健康状态
- 重大变更前:升级、迁移或打补丁前先确认基础健康
常用示例
常用示例
dcdiag # 对本地域控跑默认测试集
dcdiag /s:DC01 # 指定目标域控
dcdiag /q # 只输出错误,适合批量巡检
dcdiag /v > D:\diag\dcdiag_v.txt # 详细输出重定向留档
dcdiag /test:DNS /v /s:DC01 # DNS 专项(AD 最常见的问题源)
dcdiag /test:Replications /test:Advertising /test:Services # 只跑关键项
dcdiag /test:SysVolCheck /test:MachineAccount # 检查 SYSVOL 与机器账户
REM 逐台域控执行并回收结果,形成全林体检
dcdiag /s:DC02 /q >> D:\diag\all_dcs.txt常跑测试项含义
| 测试项 | 检查什么 | 异常常见原因 |
|---|---|---|
| Connectivity | 基础连通与命名上下文可用性 | 网络、防火墙、DNS 解析 |
| Advertising | 域控是否对外广播自身角色 | 服务未启动、DNS 记录缺失 |
| Replications | 复制链路与延迟 | RPC 不通、时间偏差、拓扑异常 |
| Services | 关键服务是否运行 | 服务被停用或启动失败 |
| DNS | SRV 记录、转发器、动态更新 | DNS 指向公网、记录缺失 |
| SysVolCheck | SYSVOL 共享与复制状态 | 共享缺失、复制中断 |
| KnowsOfRoleHolders | FSMO 角色持有者是否可达 | 角色持有者离线 |
| MachineAccount | 机器账户与安全通道 | 密码不同步、账户被删 |
域控的 DNS 设置是最常见的隐患:域控应把首选 DNS 指向自身或另一台域控,而不是指向公网服务器。指向公网会导致 SRV 记录解析失败,进而出现登录缓慢、复制报错等一连串问题。
输出很长时按顺序读:先看哪些测试为 failed,再看警告(具有关键影响的项目),最后才逐条深挖。把 /q 与 /v 结合使用——先 /q 定位问题,再对具体测试项加 /v 细看。
与其它工具配合
与其它工具配合
dcdiag /q # 1. 快速找错误
dcdiag /test:DNS /v # 2. DNS 专项深挖
repadmin /replsummary # 3. 复制汇总(全局视角)
repadmin /showrepl # 4. 复制明细(按分区与邻居)
REM 5. 事件日志交叉验证(PowerShell 中执行)
REM Get-WinEvent -LogName 'Directory Service' -MaxEvents 50
REM Get-WinEvent -LogName 'DNS Server' -MaxEvents 50/fix 会实际修改配置(例如重新注册 SPN 或修正机器账户),不是只读检查。生产域控上执行前先确认影响并做好记录,非必要不使用;排障阶段建议先只做只读检查。