能恢复,但需AD回收站启用且账号在180天保留期内;未启用则依赖备份或ntdsutil;首步是用Get-ADObject查Deleted属性确认是否在回收站。
能恢复,但前提是ad回收站已启用且账号仍在保留期内(默认180天)。没启用就只能走备份或ntdsutil授权还原,别浪费时间在回收站上。
确认账号是否在回收站中
这是所有操作的第一步,也是最容易跳过的误判点。直接执行查询命令比翻界面快得多:
-
Get-ADObject -Filter {SamAccountName -eq "username"} -IncludeDeletedObjects—— 若返回对象中Deleted属性为True,说明它在回收站;若无输出或Deleted为空,说明未启用回收站、已被彻底清除,或已过期 - 注意大小写不敏感,但
SamAccountName必须拼写准确;用sAMAccountName也可,AD PowerShell对属性名有一定容错 - 如果域功能级别低于 Windows Server 2008 R2,该命令会报错或始终无结果——此时
Get-ADOptionalFeature查不到Recycle Bin Feature
PowerShell一键恢复单个账号
命令本身简单,但关键在于恢复后状态是否完整。这条管道命令是目前最稳妥的实操路径:
Get-ADObject -Filter {SamAccountName -eq "username"} -IncludeDeletedObjects | Restore-ADObject- 恢复后账号自动回到原始
OU,SID、组成员关系、密码哈希、msDS-AdditionalDnsHostName等非计算属性全部保留 - 不会自动启用账号(
Enabled仍为False),需额外执行Enable-ADAccount -Identity "username" - 不会重置密码,用户仍可用原密码登录(前提是密码哈希未被覆盖);若已禁用或遗忘,需
Set-ADAccountPassword+Unlock-ADAccount
用AdRestore.exe做应急批量恢复
当PowerShell不可用(如DC系统异常、远程shell受限)、或需在无GUI环境快速拉回一批账号时,AdRestore.exe是更轻量的选择:
- 必须在域控制器本地以管理员权限运行;不依赖AD模块,也不需要提前导入
ActiveDirectory模块 - 常用组合:
AdRestore.exe /filter:"(&(objectClass=user)(whenChanged>=20260401000000.0Z))" /restore /quiet—— 按删除时间范围过滤并静默恢复 - 它只负责“把对象从
CN=Deleted Objects挪回原位置”,不做启用、解锁、密码重置等后续动作,这些必须手动补全 - 输出日志里会显示DN和恢复结果,建议重定向到文件:
AdRestore.exe /filter:"(sAMAccountName=*)” /restore > restore.log 2>&1
图形界面恢复的隐藏限制
ADAC(dsac.exe)看着直观,但有几个实际使用中容易卡住的点:
- 必须手动添加“Deleted Objects”导航节点:右键“本地域” → “管理” → “添加导航节点” → 勾选“Deleted Objects”。不加这步,界面里根本看不到回收站
- 搜索框不支持通配符模糊匹配(如
user*),只能输完整sAMAccountName或DisplayName;输错一个字母就搜不到 - 多选还原时,若其中某个对象已不在回收站(比如被其他管理员先恢复过),整个操作会失败,且错误提示极不明确(常为“找不到对象”)
- 还原后账号出现在原OU,但OU若已被删除,它会落在
LostAndFound容器下——这点图形界面完全不提醒
真正耗时的从来不是恢复动作本身,而是确认账号是否还在可恢复窗口、判断要不要补组策略、检查服务账号密钥是否失效、验证邮箱同步状态。回收站只是把尸体拉回来,缝合和复苏得靠人盯。

















