本文围绕 AD 域控制器在生产环境中的常见故障现象与排查方法展开,内容整理自 PowerShell 中文社区团队在企业身份基础设施领域的生产环境交付与故障处置记录。作者邓鹏,PowerShell 中文社区创始人,深圳市研创信息科技有限公司 CTO,51CTO 认证讲师,长期从事企业级身份管理与邮件系统运维,主导过多域林架构迁移与域控灾难恢复项目。文中的命令与方法均来自实际项目,执行前请确认已有可用备份与回滚方案。以下从排查的整体顺序说起。
目录
- 一、先建立排查顺序:90% 的域控故障都在这四层里
- 二、工具箱:六条命令解决八成问题
- 三、复制类故障
- 3.1 复制失败的通用定位流程
- 3.2 按错误码归因
- 3.3 墓碑超期与残留对象
- 四、认证与登录类故障
- 4.1 信任关系失败
- 4.2 时间偏差导致的 Kerberos 失败
- 4.3 账号大面积锁定
- 4.4 SPN 重复与服务认证失败
- 五、DNS 类故障
- 六、SYSVOL 与组策略类故障
- 七、目录数据库与服务类故障
- 八、性能类故障:登录慢、LSASS 高占用
- 九、灾难场景:域控全灭与误删对象
- 十、十条操作红线
- 十一、事件 ID 速查表
- 十二、写在最后
一、先建立排查顺序:90% 的域控故障都在这四层里
域控故障看起来千奇百怪,但排查顺序其实是固定的。顺序错了,你会在错误的方向上耗费一整天。
正确的顺序是自下而上四层:
| 层级 | 检查什么 | 典型现象 |
|---|---|---|
| 第 1 层:DNS | DC 能否解析自己与伙伴、SRV 记录是否完整 | 客户端找不到域控、复制报 8524、加域失败 |
| 第 2 层:时间 | PDC 与外部源、各 DC 之间的时间偏差 | Kerberos 认证失败、复制报 -2146893022 |
| 第 3 层:复制 | 各分区在 DC 之间的同步状态 | 新建用户某台 DC 查不到、密码改了不生效 |
| 第 4 层:服务与数据 | NTDS、Netlogon、DFSR、KDC 服务与数据库 | 登录卡死、组策略不生效、SYSVOL 打不开 |
为什么 DNS 一定排第一?因为 AD 的一切都靠 DNS 定位——客户端找 DC 靠 SRV 记录,DC 找复制伙伴靠 CNAME 与 SRV,Kerberos 找 KDC 也靠 DNS。DNS 一错,上面三层全部连带出错,你会看到一堆互相矛盾的报错。
除了分层,还有两个提高效率的习惯:
- 问清时间线:“什么时候开始的、之前改过什么”。域控故障几乎都有触发事件——打了补丁、加了台设备、改过防火墙、恢复过快照、动过 DNS。找到变更点,等于找到一半答案;
- 对比法:环境里只要还有第二台健康 DC,就把它当对照组。同一客户端分别对两台 DC 做认证、同一对象在两台 DC 上查属性,差异点就是故障点。
二、工具箱:六条命令解决八成问题
# 1. 全量健康体检(升级、故障都先跑这个)dcdiag/v/e/f:c:\temp\dcdiag.log# 2. DNS 专项(含 SRV 记录、动态更新、转发器)dcdiag/test:dns/e/v# 3. 复制状态总览:所有分区、所有 DC 的错误计数repadmin/replsummary# 4. 逐 DC 看入站复制伙伴与最近成功时间repadmin/showrepl# 5. 客户端视角的 DC 定位(把 <域名> 换成你的域)nltest/dsgetdc:corp.example.com/force# 6. 时间同步状态w32tm/query/status w32tm/query/source补充几条定位精度更高的:
# Kerberos 票据清理与查看klist purge klist# 机器账号安全通道验证与修复Test-ComputerSecureChannel-VerboseTest-ComputerSecureChannel-Repair-Credential(Get-Credential)# 查最近 24 小时目录服务日志中的错误与警告Get-WinEvent-LogName"Directory Service"-MaxEvents 200|Where-Object{$_.LevelDisplayName-in@("错误","警告","Error","Warning")}|Select-ObjectTimeCreated,Id,LevelDisplayName,Message|Format-Table-AutoSize三、复制类故障
复制的症状往往很隐蔽:没有报错,但"在这台 DC 上新建的用户,另一台上查不到"、“改了密码某台机器登不上”。等到有人报障,通常已经积累了好几天。
3.1 复制失败的通用定位流程
# 第一步:拿到具体错误码(关键,不要跳过)repadmin/replsummary repadmin/showrepl*/csv > c:\temp\repl.csv# 第二步:查看复制队列是否积压repadmin/queue# 第三步:手动触发一次复制,观察是否成功repadmin/syncall/APeD dc01.corp.example.com dc=corp,dc=example,dc=com# 第四步:强制 KCC 重算拓扑repadmin/kcc# 第五步:PowerShell 视角查最近失败记录Get-ADReplicationFailure-Target*-Scope Server定位逻辑:先确认是所有 DC 都失败还是个别 DC 失败。全部失败,问题在 DNS 或时间这类全局因素;个别失败,问题在网络、防火墙端口、单机服务或该 DC 的对象权限。
3.2 按错误码归因
repadmin /showrepl输出的最后一个错误码就是答案,按表对号入座:
| 错误码 | 含义 | 高概率原因 | 处理动作 |
|---|---|---|---|
| 8524 | DNS 查询失败 | 缺少 CNAME 记录、DNS 指向错误、_msdcs区域异常 | dcdiag /test:dns定位;ipconfig /registerdns+ 重启 Netlogon 重新注册 SRV |
| -2146893022 | 目标主体名称不正确 | 两台 DC 时间偏差超出 Kerberos 容忍(默认 5 分钟) | 校正时间(见 4.2),必要时重置 DC 机器账号密码 |
| 1722 | RPC 服务器不可用 | 网络不通、防火墙拦截 RPC 动态端口、对端 DC 服务未启动 | 先测 135 端口与动态端口范围,检查防火墙与站点子网,确认对端 NTDS 服务运行 |
| 8453 | 复制访问被拒绝 | DC 对象权限异常、安全通道损坏 | 检查 NTDS Settings 对象 ACL、域控组成员;重置安全通道 |
| 5 | 访问被拒绝 | 权限策略被组策略误改、UAC 限制 | 检查默认域控策略中的用户权限分配 |
| 1256 | 远程系统不可用 | 对端 DC 宕机或正在重启 | 确认对端状态,必要时进入元数据清理流程 |
| 8614 / 2042 | 墓碑超期、无法复制已删除对象 | 长期离线超过墓碑生命周期(默认 180 天) | 该 DC 已不可恢复,必须强制降级 + 元数据清理后重建 |
| 8606 | 对象属性不足 | 之前元数据清理不彻底,残留半成品对象 | 用repadmin /showobjmeta定位,清理残留对象 |
| 1988 | 长期未收到复制信息 | 复制链路静默中断(可能无报错) | 按 3.1 流程逐层排查 |
3.3 墓碑超期与残留对象
当 DC 离线时间超过墓碑生命周期(msDS-DeletedObjectLifetime,默认 180 天),它会带着"已删除对象"重新上线,产生残留对象(Lingering Object),污染整个域。
判定与处理:
# 查看墓碑生命周期配置Get-ADObject"CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=corp,DC=example,DC=com"-Properties msDS-DeletedObjectLifetime# 检查并清除残留对象(先审计,不要直接改)repadmin/removelingeringobjects/advisory_mode dc02.corp.example.com DC=corp,DC=example,DC=com <reference_DC_GUID># 确认无误后再执行实际删除repadmin/removelingeringobjects dc02.corp.example.com DC=corp,DC=example,DC=com <reference_DC_GUID>注意:/removelingeringobjects只能在非权威一侧执行,且必须先跑 advisory 模式核对影响范围。执行前完整备份,操作不可逆(对象删除后进回收站,但属性可能已丢失)。
四、认证与登录类故障
4.1 信任关系失败
现象:成员机提示"此工作站和主域间的信任关系失败",用户无法登录。
# 在成员机上定位Test-ComputerSecureChannel-Verbose# 返回 False 即安全通道损坏nltest/sc_verify:corp.example.com# 验证安全通道nltest/sc_reset:corp.example.com# 重置安全通道(需本地管理员)# 或直接用 PowerShell 修复机器密码Reset-ComputerMachinePassword-Server"DC01"-Credential(Get-Credential)常见诱因:虚拟机从快照恢复、机器长时间离线超过机器密码更新周期(默认 30 天)、系统盘克隆后 SID/密码不同步、域控侧的计算机账号被误删。修复后如仍失败,删除并重新加域是最后的兜底手段。
4.2 时间偏差导致的 Kerberos 失败
这是最容易被误判为"域控坏了"的故障——实际只是时间差了 6 分钟。
# 确认当前时间源与偏差w32tm/query/source w32tm/query/status w32tm/stripchart/computer:dc01.corp.example.com/samples:5# 在 PDC 上重新指定外部时间源并同步w32tm/config/manualpeerlist:"ntp.aliyun.com,0x8"/syncfromflags:manual/reliable:yes/updateRestart-Servicew32time w32tm/resync/force# 成员机/其他 DC 走域层级w32tm/config/syncfromflags:domhier/updateRestart-Servicew32time w32tm/resync根因常在这三处:PDC 角色迁移后外部时间源没跟着走、虚拟机宿主机的时钟同步(VMware Tools 时间同步)覆盖了域层级、防火墙拦了 UDP 123。
4.3 账号大面积锁定
# 快速列出锁定账号Search-ADAccount-LockedOut|Select-ObjectName,SamAccountName,LastLogonDateUnlock-ADAccount-Identity"zhangsan"# 从 PDC 的事件日志里找锁定来源(4740 含调用方计算机名)Get-WinEvent-LogName Security-FilterXPath"*[System[EventID=4740]]"-MaxEvents 50|Select-ObjectTimeCreated,@{n='User';e={$_.Properties[0].Value}},@{n='Caller';e={$_.Properties[1].Value}}锁定通常是"某处还用着旧密码":计划任务、IIS 应用池身份、服务账号、手机邮件客户端、映射的旧凭据。解锁只是止血,找到持续重试的源头才算解决。建议开启"账号锁定事件审计"并保留 4740 至少 30 天。
4.4 SPN 重复与服务认证失败
现象:某服务(SQL、IIS、文件共享)用域账号启动后报 Kerberos 认证失败,事件日志出现 4769 失败或 KRB_AP_ERR_MODIFIED。
# 检查全域重复 SPN(重点看输出中的重复项)setspn-X-F# 查看某账号注册的所有 SPNsetspn-L svc_sql# 删除错误/重复的 SPN 后重新注册setspn-D MSSQLSvc/sql01.corp.example.com:1433 svc_sql setspn-A MSSQLSvc/sql01.corp.example.com:1433 svc_sqlSPN 重复几乎都发生在机器名被重用(旧机器未清理、克隆虚拟机、同名重装)时。清理时务必确认 SPN 归属的正确账号,删错会导致其他服务认证中断。
五、DNS 类故障
DNS 问题的表现最"不像 DNS":加域失败、登录慢、复制报错、组策略不生效,都可能是它。
第 1 步:验证 SRV 记录是否齐全
nslookup-type=srv _ldap._tcp.dc._msdcs.corp.example.com nslookup-type=srv _kerberos._tcp.dc._msdcs.corp.example.com nslookup-type=srv _ldap._tcp.pdc._msdcs.corp.example.com任何一条查不到或缺少某个 DC,说明该 DC 的 SRV 注册失败:
ipconfig/registerdnsRestart-Servicenetlogon dcdiag/test:dns/v第 2 步:检查_msdcs委托
_msdcs.<林根域名>必须是独立的 AD 集成区域(或正确的委派),指向林根域的 DC。这个区域丢了,跨域复制与 Kerberos 会陆续失效。重新创建区域后等待 SRV 自动注册,或手动在 Netlogon.dns 中导入记录。
第 3 步:动态更新失败(事件 4013 / 4015)
- 4013:DNS 服务等待 AD 完成初始同步,AD 集成区域无法加载 → 通常是复制问题,先修复制;
- 4015:DNS 服务从 AD 收到严重错误(区域复制失败)→ 检查该区域的复制范围与权限。
第 4 步:陈旧记录与解析错乱
# 查看某条 A 记录的时间戳,判断是否为残留Get-DnsServerResourceRecord-ZoneName"corp.example.com"-Name"old-dc01"-RRType A# 清理已退役 DC 的 A / SRV / CNAME 记录后,确认老化与清理策略Get-DnsServerZoneAging-ZoneName"corp.example.com"Set-DnsServerScavenging-ScavengingState$true-ScavengingInterval 7.00:00:00-ApplyOnAllZones第 5 步:客户端仍指向旧 DC
这是"登录慢、组策略不生效"的高频根因。DHCP 作用域选项 006、静态配置的服务器、网络设备的管理口,逐项核对 DNS 指向。客户端侧可用nltest /dsgetdc:<域名>确认实际定位到了哪台 DC。
六、SYSVOL 与组策略类故障
6.1 SYSVOL 未共享 / 打不开
# 检查共享是否正常net share|findstr SYSVOL dfsrmig/getmigrationstate# 确认所有 DC 迁移状态一致dfsrdiag ReplicationState# 查看 DFSR 复制状态dfsrdiag pollad# 强制 DFSR 重新读取 AD 配置若\\corp.example.com\SYSVOL无法访问,先确认 DFSR 服务与 DFS Replication 日志(事件 4004、4012、5002),再确认是否卡在 FRS→DFSR 迁移的中间状态。迁移卡住时不要反复切换 state,必须先让所有 DC 复制正常、状态收敛。
6.2 组策略不生效
gpresult/h c:\temp\gpo.html/f# 客户端实际应用的 GPO 报告gpupdate/force dcdiag/test:sysvolcheck/test:advertising排查顺序:先看 gpresult 报告里 GPO 有没有被"拒绝"或"未应用"→ 检查安全筛选与 WMI 筛选 → 检查 GPO 链接的站点/域/OU 层级与启用状态 → 最后才怀疑 SYSVOL 版本号不一致(GPT.ini 的 Version 号在各 DC 上不同,说明 SYSVOL 复制滞后)。
6.3 SYSVOL 内容不一致
# 对比两台 DC 上同一 GPO 的版本号与文件时间Get-ChildItem"\\dc01\SYSVOL\corp.example.com\Policies"|Select-ObjectName,LastWriteTimeGet-ChildItem"\\dc02\SYSVOL\corp.example.com\Policies"|Select-ObjectName,LastWriteTime确认不一致后走 DFSR 非权威恢复(D2)或权威恢复(D4)。权威恢复会覆盖其他 DC 的 SYSVOL,执行前必须选定"内容正确的那台"并完整备份,操作步骤严格按官方流程,不要凭记忆敲。
七、目录数据库与服务类故障
7.1 NTDS 服务启动失败
先看事件日志的 ESENT 记录:
Get-WinEvent-LogName"Directory Service"-MaxEvents 100|Where-Object{$_.Id-in@(467,474,1013,1393,2103)}|Select-ObjectTimeCreated,Id,Message|Format-ListGet-WinEvent-LogName Application-MaxEvents 100|Where-Object{$_.ProviderName-like"*ESENT*"}|Select-ObjectTimeCreated,Id,Message|Format-List处理思路:
- 磁盘空间:NTDS 所在卷剩余空间不足会直接导致服务起不来,先查空间;
- 数据库完整性检查(需停止 NTDS 服务):
net stop ntds ntdsutil"files""integrity""quit""quit"# 如需离线整理(减小数据库体积,耗时较长,需预留停机窗口)ntdsutil"files""compact to c:\temp""quit""quit"netstartntds- 日志文件损坏:优先用备份做权威/非权威恢复,不要手工删除
.log文件——那会导致数据库不一致。
7.2 USN 回滚:最危险的隐性故障
现象:DC 从快照/镜像恢复后,某些对象"复活"或属性回退,复制出现 8614、8606,甚至整个域出现重复对象。
原因:AD 用 USN(更新序列号)标识变更顺序,虚拟机快照回滚会让 USN “倒退”,其他 DC 认为这是旧数据,导致复制逻辑错乱。
处理:
- 立即将该 DC 从网络隔离(断网或禁用网卡),防止污染扩散;
- 若环境有其他健康 DC:强制降级该 DC → 元数据清理 → 重新提升为新 DC;
- 若它是唯一 DC:只能做权威恢复(authoritative restore),恢复后提升所有对象的版本号并强制全量复制;
- 恢复完成后务必确认:
repadmin /showrepl全绿、dcdiag无复制错误、抽查关键对象属性正确。
这条故障最重要的不是处理,而是预防:绝不对运行中的域控做快照回滚。虚拟化平台上的 DC 要用"克隆后 sysprep 重建"或受支持的 DC 克隆流程,而不是快照回滚。
八、性能类故障:登录慢、LSASS 高占用
8.1 登录慢
按"客户端 → 网络 → DC"三段定位:
# 客户端侧:DC 定位耗时与所选 DCnltest/dsgetdc:corp.example.com# 检查组策略处理耗时Get-WinEvent-LogName"Microsoft-Windows-GroupPolicy/Operational"-MaxEvents 30|Select-ObjectTimeCreated,Id,Message|Format-Table-AutoSize高频原因:客户端 DNS 指向了不可达的旧 DC、跨站点定位(站点与子网未正确关联)、组策略数量过多或含大量软件安装策略、漫游配置文件/主目录指向慢速存储。
8.2 LSASS 高 CPU / LDAP 查询风暴
# 找出开销最大的 LDAP 查询(事件 1644,需先开启"Field Engineering"诊断级别)Get-WinEvent-LogName"Directory Service"-MaxEvents 50|Where-Object{$_.Id-eq1644}|Select-ObjectTimeCreated,Message|Format-List常见根因:应用写了无索引属性的查询(如按description、extensionAttribute全表扫)、分页查询未加过滤条件、某台应用服务器疯狂重试认证。处理方式:为高频查询属性建索引(需评估索引体积与写入开销)、修正应用查询语句、必要时对该应用限流。
九、灾难场景:域控全灭与误删对象
9.1 唯一 DC 宕机的恢复
# 从系统状态备份做非权威恢复(推荐先做非权威,再按需权威恢复特定对象)wbadmin get versions-backupTarget:E: wbadminstartsystemstaterecovery-version:10/26/2026-02:00-backupTarget:E:-authsysvol# 恢复后进入目录服务修复模式做权威恢复(仅针对被误删的对象)# 重启按 F8 进入 DSRM,随后:ntdsutil"authoritative restore""restore subtree OU=Sales,DC=corp,DC=example,DC=com""quit""quit"关键前提:备份时间必须在墓碑生命周期之内(默认 180 天),否则恢复出来的对象已被标记删除,无法还原。
9.2 误删对象
- 已启用 AD 回收站:直接从回收站还原,完整保留属性与组成员关系:
Get-ADObject-Filter'isDeleted -eq $true -and name -like "*zhangsan*"'-IncludeDeletedObjectsRestore-ADObject-Identity"<对象DN>"- 未启用回收站:只能走权威恢复或墓碑还原(tombstone reanimation,属性会丢失,组关系需重建)。这也是建议所有环境都启用 AD 回收站的原因——它是成本最低的一道保险。
# 启用回收站(不可逆,需林内所有 DC 为 2008 R2 及以上)Enable-ADOptionalFeature-Identity'CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=corp,DC=example,DC=com'-Scope ForestOrConfigurationSet-Target corp.example.com十、十条操作红线
- 绝不对运行中的域控做快照回滚——USN 回滚是域级事故的起点;
- 不要在 DC 上安装无关角色与第三方软件(IIS、Exchange、监控 Agent 尽量外置),减少攻击面与排障干扰;
- 不要随手 seize FSMO,原持有者在线时必须用 transfer;
- 不要手工编辑或删除
ntds.dit、日志文件,任何数据库操作前停服务并备份; - 不要反复切换
dfsrmig状态,先修复制再等状态收敛; repadmin /removelingeringobjects先跑 advisory 模式,确认影响面再执行;- 权威恢复前必须选定正确源并完整备份,它会覆盖其他 DC 的数据;
- 任何高危变更前做系统状态备份并验证可恢复,未验证过的备份不算备份;
- 元数据清理要清干净:计算机账号、NTDS Settings、DNS 记录(A/SRV/CNAME)、站点内 Server 对象,缺一个都会在后续引发复制错误;
- 变更要有记录:谁、什么时候、改了什么、回滚点在哪。域控故障复盘时,这份记录往往比日志更值钱。
十一、事件 ID 速查表
| 事件 ID | 日志源 | 含义速查 |
|---|---|---|
| 4013 / 4015 | DNS Server | AD 集成区域加载失败 / 区域复制严重错误 |
| 4740 | Security | 账号被锁定(含调用方计算机名) |
| 4768 / 4769 / 4771 | Security | TGT 请求 / 服务票据请求 / Kerberos 预认证失败 |
| 5719 | System (Netlogon) | 启动时找不到可用域控 |
| 5781 / 5782 / 5783 | System (Netlogon) | 动态 DNS 注册失败 / 成功 / 部分失败 |
| 1126 | Directory Service | 建立与全局编录的安全连接失败 |
| 1311 | Directory Service | 复制配置存在问题,KCC 无法建立拓扑 |
| 1566 | Directory Service | 所有 DC 复制均失败 |
| 1864 | Directory Service | 复制延迟告警(超过阈值未同步) |
| 1988 | Directory Service | 长期未收到复制信息 |
| 2089 | Directory Service | 备份间隔超期告警 |
| 4004 / 4012 / 5002 | DFS Replication | 复制失败 / 因墓碑或 USN 停止 / SYSVOL 初始化失败 |
| 1058 / 1030 / 1129 | GroupPolicy | 组策略读取失败 / 无法解析路径 / 无网络连接 |
| 467 / 474 | Application (ESENT) | 数据库页校验错误 / 页写入失败 |
事件 ID 的具体描述以微软官方文档与当前系统语言为准,上表用于快速定位方向,不作为判定的唯一依据。
十二、写在最后
写这篇的初衷很简单:域控故障的排查从来不是"知识不够",而是"顺序不对"。同样的现象,先查 DNS 的人十分钟解决,先重装服务的人耗掉一夜。
如果只能记住一句话,那就是:先分层、再对码、后动手。分层定位缩小范围,错误码归因锁定根因,最后才轮到执行处理动作。跳过前两步直接动手,往往是把小故障做成大事故。
关于作者 / 出品
本文由 PowerShell 中文社区团队推出。作者邓鹏,PowerShell 中文社区创始人,深圳市研创信息科技有限公司 CTO,西安交通大学计算机专业毕业,51CTO 认证讲师(2021 年度十大新锐讲师)。
社区团队承接企业底层 IT 基础设施的技术服务,主要包括:AD 域控的新建部署、跨林迁移、域名更换、跨境 RODC 部署、域信任关系修复、组策略深度排错、域控升降级与灾难恢复;Exchange 邮件系统的版本升级迁移、数据库恢复、传输与安全排障;VMware 平台迁移与 Citrix CVAD 云桌面部署、性能调优;XSKY、华为、浪潮、深信服等分布式存储的故障定位与服务器 RAID 数据恢复;NVIDIA B300 / H100 算力服务器的整机验收、NVLink 互联验证与长稳压力测试。同时提供系统迁移、内网安全加固、信创适配、PowerShell 自动化脚本定制与运维实战培训。
服务按"先评估、后动手"的流程推进:前期完成现状调研与风险评估,交付环境健康检查报告、实施方案与完整回滚预案,实施后提供验收文档;生产环境的高危变更,一律在备份与回滚方案确认后执行。技术服务不含硬件设备采购。
完整版《AD 域控常见故障 FAQ 大全》与《AD 域控升级路线图》可在 PowerShell 中文社区官网查阅:www.powershell.com.cn
本文首发于 CSDN,由 PowerShell 中文社区团队出品,转载请注明作者邓鹏与出处。