ADSI编辑器无法恢复已丢失的系统容器或关键配置属性,仅能重置仍存在的可写属性值;真正恢复依赖AD回收站、备份或ntdsutil权威还原。
adsi编辑器本身不能直接“恢复”已丢失的系统容器(如cn=system、cn=configuration)或关键配置属性(如dsheuristics、msds-behavior-version),因为它只是一个浏览和写入工具,不具备对象重建或历史回溯能力。真正可行的操作路径依赖于前提条件:是否启用ad回收站、是否有备份、是否处于权威还原窗口期。
确认丢失类型与可恢复性边界
系统容器一旦被删除,不会进入回收站——它们属于“受保护对象”,默认不可删除;若实际被删,说明执行过dsrm -f -q或绕过保护的强制操作,此时ADSI编辑器无法重建其结构或初始属性。
- 检查是否真“丢失”:在ADSI编辑器中展开
Configuration或Domain命名上下文,确认目标容器是否存在;若显示“找不到”,不是界面问题,而是对象确实不在数据库中 - 验证AD回收站状态:
Get-ADOptionalFeature "Recycle Bin Feature",返回EnabledState: Enabled才支持软删除恢复 - 关键配置属性(如
dSHeuristics)若被清空或误写为0/空值,ADSI编辑器可重新写入——但必须知道原始值(例如标准域环境通常为00000000000000000000000000000000或00000000000000000000000000000002),否则可能引发密码策略、GC查询等异常
用ADSI编辑器修复可写的关键属性值
对已被篡改但对象仍存在的关键属性,ADSI编辑器可用于重置。操作前务必导出原值:
- 右键目标对象(如
CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,DC=com)→ “属性” → 找到dSHeuristics或msDS-Behavior-Version - 若字段为灰色不可编辑,说明该属性为只读或ACL拒绝当前用户写入;需用域管理员权限连接,并确认继承未被阻断
- 输入合法值后点击“应用”:例如
msDS-Behavior-Version在Windows Server 2016域功能级别应为7;dSHeuristics建议用十六进制字符串(如00000000000000000000000000000002)而非十进制 - 修改后立即用
repadmin /showattr验证是否同步到其他DC,避免单点修复导致不一致
系统容器丢失时的替代恢复路径
若CN=System、CN=Microsoft Exchange System Objects等容器消失,ADSI编辑器无能为力,必须走底层恢复流程:
- 使用
ntdsutil执行权威还原(Authoritative Restore):先非权威还原系统状态备份,再运行authoritative restore命令标记容器为权威,强制复制到其他DC - 从干净DC导出LDIF:在正常DC上用
ldifde -f system.ldf -s dc01 -d "CN=System,DC=domain,DC=com" -p onelevel导出结构,再导入到受损DC(仅适用于未破坏schema的轻量缺失) - Exchange相关容器(如
Microsoft Exchange System Objects)丢失,需运行Setup /PrepareAD重新初始化Exchange AD扩展,而非手动创建
操作前必须做的三件事
任何通过ADSI编辑器修改关键路径的操作,都必须前置验证,否则极易引发连锁故障:
- 用
Get-ADObject -Identity "CN=System,DC=domain,DC=com" -Properties * | fl确认对象存在且isCriticalSystemObject为True,避免误删后强行重建 - 检查当前用户对目标容器的ACL权限:
dsacls "CN=System,DC=domain,DC=com",确保有WP(Write Property)和CC(Create Child)权限 - 在测试域或离线AD实例中,用相同LDIF或PowerShell脚本预演一遍;生产环境严禁凭经验直接写入
objectClass、systemFlags等架构级属性










