Windows 域策略推送失败致新电脑无法登录的处理

问题背景

公司使用 Windows Server 2019 搭建 AD 域环境,主域控 DC01 + 辅助域控 DC02。全公司约 300 台电脑加入域管理。9 月中旬 IT 部门按计划部署了 30 台新笔记本电脑,完成系统安装后逐一加入域。

故障现象

9 月 15 日早上,所有新部署的 30 台电脑出现相同问题:域用户登录时提示:

1
2
此工作站和主域间的信任关系失败。
The trust relationship between this workstation and the primary domain failed.

已有的旧电脑不受影响,但旧电脑上修改密码后新密码不生效(只能用旧密码登录)。新员工入职当天无法开工,IT 服务台被打爆。

排查过程

第一步:检查域加入状态

1
2
PS> Test-ComputerSecureChannel -Verbose
Test-ComputerSecureChannel : 此工作站和主域间的信任关系失败

安全通道断裂。尝试修复:

1
2
PS> Reset-ComputerMachinePassword -Server dc01.company.com
Reset-ComputerMachinePassword : 无法联系域控制器

连不上域控。但 ping dc01.company.com 正常,

第二步:检查域控 Netlogon 服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# DC01 上
PS> Get-Service Netlogon
Status   Name               DisplayName
------   ----               -----------
Running  Netlogon            Netlogon

PS> net share
Share name   Resource                        Remark
-------------------------------------------------------
NETLOGON     C:\Windows\SYSVOL\...\scripts   Logon server share
SYSVOL       C:\Windows\SYSVOL\sysvol        Logon server share

Netlogon 服务显示 Running,共享也在。但:

1
2
3
4
5
PS> Get-SmbShare -Name NETLOGON | Select *
ShareState: Online
ShareType:  FileSystemDirectory
FolderEnumerationMode: AccessBased
Path: C:\Windows\SYSVOL\domain\scripts

状态一切正常。但为什么客户端连不上?

第三步:检查 Sysvol 复制

1
2
3
4
PS> dcdiag /test:sysvolcheck
Starting test: SysVolCheck
   Error: Netlogon share \\dc01.company.com\netlogon is not available.
   ......................... DC01 failed test SysVolCheck

dcdiag 说 Netlogon 共享不可用!但 net share 又显示它在共享列表中……

第四步:定位真因——磁盘空间

1
2
3
4
PS> Get-PSDrive C | Select Used,Free
Used        Free
----        ----
 59.4 GB    0.0 GB      # C盘满了!

DC01 的 C 盘 100% 满。检查空间占用:

1
2
3
4
5
PS> Get-ChildItem C:\ -Recurse -ErrorAction SilentlyContinue | 
    Sort-Object Length -Descending | Select -First 5

C:\Windows\SYSVOL\staging\staging areas\{GUID}\Policies\{GUID}\GPT.INI  1.2GB
C:\Windows\SYSVOL\staging\staging areas\{GUID}\...  12万个文件共58GB

Sysvol 的 staging areas 文件夹堆积了超过 12 万个文件,占用了 58GB 空间。这是因为之前一次域策略更新时 DFSR(分布式文件复制)复制失败,大量的暂存文件被无限保留。

虽然 Netlogon 服务在运行、共享在列表中,但 由于 C 盘空间为 0,SMB 服务在尝试读取 Netlogon 共享内容时返回了 “磁盘空间不足” 错误,客户端端无法读取登录脚本和策略文件。

第五步:为什么旧电脑似乎不受影响?

旧电脑已经缓存了之前的域策略和计算机账户凭据(凭证缓存默认 10 次登录),因此在短期内仍然可以使用缓存凭据登录。但新加入域的电脑没有缓存,首次登录必须通过 Netlogon 同步策略和凭据——于是全部失败。

解决方案

  1. 清理 Staging Areas
1
2
3
4
5
6
7
8
9
# 停止DFSR服务
Stop-Service DFSR

# 清理staging文件夹
Remove-Item "C:\Windows\SYSVOL\staging\staging areas\*" -Recurse -Force

# 重新初始化DFSR
dfsrdiag PollAD /Member:DC01
Start-Service DFSR

释放出 58GB 空间后,Netlogon 共享立即恢复正常。

  1. 新电脑重新登录:所有新电脑无需重新加入域,直接在登录界面输入域账号密码即可成功登录。

  2. 扩展 C 盘空间:将 C 盘从 60GB 扩展到 120GB。

根因分析

直接原因:DFS 复制失败导致 Sysvol staging areas 无限堆积文件,占满 C 盘。虽然 Netlogon 共享在列表中显示正常,但 SMB 实际无法读取文件内容,导致新电脑加入域时无法下载策略和建立安全通道。

深层原因:

  • 域控 C 盘初始分配仅 60GB,未考虑 Sysvol 增长空间
  • DFSR 复制失败后缺少清理 staging 的机制
  • 域控磁盘监控只关注了系统日志和事件日志,忽略了 Sysvol 目录

预防措施

  1. DFSR 健康监控:通过 dcdiag /test:DFSREvent 监控 DFS 复制状态
  2. Staging Area 自动清理:配置 DFSR 的 Staging Area 配额(默认 4GB),超出自动清理最旧文件
  3. 域控磁盘独立监控:对 C:\Windows\SYSVOL 目录的大小单独监控
  4. 域控 C 盘最小规格:新部署域控 C 盘至少 120GB,Sysvol 放独立分区
  5. 定期 dcdiag 巡检:每月执行一次 dcdiag /v 全面体检

总结

域控的 Netlogon 共享是整个 AD 域的命脉——没有它,新电脑加不了域、密码改不了、策略推送不了。而这一次,只是因为 C 盘满了。net share 显示共享存在不代表它能正常提供服务,就像一辆车有引擎不代表它能跑。域控的磁盘监控不能只看传统的"剩余空间",还需要关注 Sysvol 和 DFSR Staging Areas 的健康状态——它们才是真正的隐藏炸弹。

使用 Hugo 构建
主题 StackJimmy 设计