Active Directory 工具学习笔记(10.11):AdRestore 实战脚本与命令速查------从事故回滚到合规留痕
- [Active Directory 工具学习笔记(10.11):AdRestore 实战脚本与命令速查------从事故回滚到合规留痕](#Active Directory 工具学习笔记(10.11):AdRestore 实战脚本与命令速查——从事故回滚到合规留痕)
-
- 一、常见事故场景与应对策略
- [二、AdRestore 参数与过滤速查(模板可直接改名套用)](#二、AdRestore 参数与过滤速查(模板可直接改名套用))
-
- 1)列出所有可恢复对象(预览)
- 2)按名称/登录名筛选
- [3)限定对象类型 + 来源 OU(lastKnownParent)](#3)限定对象类型 + 来源 OU(lastKnownParent))
- [4)指定 DC、静默批量恢复](#4)指定 DC、静默批量恢复)
- [5)按时间窗口(误删时间近 2 小时)](#5)按时间窗口(误删时间近 2 小时))
- 三、恢复后的"补缀剧本"(开箱即用)
-
- 1)单用户回生与补缀(PowerShell)
- [2)按 OU 批量恢复用户并回填组(基于基线 CSV)](#2)按 OU 批量恢复用户并回填组(基于基线 CSV))
- [3)计算机对象:重置信任与 GPO 体检](#3)计算机对象:重置信任与 GPO 体检)
- 四、复制一致性与健康检查
- 五、安全与合规:留痕、审批、回滚
- 六、FAQ(两行见底)
- [七、口袋清单(Cheat Sheet)](#七、口袋清单(Cheat Sheet))
- 结语
Active Directory 工具学习笔记(10.11):AdRestore 实战脚本与命令速查------从事故回滚到合规留痕
目标:把上篇 AdRestore 的原理落到可复用剧本 与口袋速查 ,在"误删用户/组/OU"的紧急现场,三步完成定位→恢复→补缀→留痕。
一、常见事故场景与应对策略
| 场景 | 现象 | 快速处置 | 补缀重点 |
|---|---|---|---|
| 误删单个用户 | 登录失败、邮箱停用 | AdRestore /filter:"(sAMAccountName=bob)" /restore |
启用账号、重置密码、强制改密、补回组成员、检查 SPN/代理设置 |
| 批量误删一组用户 | OU 被清空 | AdRestore /filter:"(&(objectClass=user)(lastKnownParent=OU=Sales,DC=corp,DC=local))" /restore /quiet |
批量密码策略、成员关系回填、GPO 作用校验 |
| 删除安全组 | 访问被拒 | AdRestore /filter:"(&(objectClass=group)(cn=App_Prod_*))" /restore |
关键资源 ACL 回归、成员清单对齐 |
| 误删计算机对象 | 设备无法入域/票据异常 | 恢复对象后通常仍需重新入域 或重置信任 | Reset-ComputerMachinePassword、域信任验证 |
| OU 误删 | 大量对象消失 | 分批恢复(先关键用户/服务账号),再 OU 结构 | 复制拓扑评估、回放顺序、全局组/域本地组依赖 |
是否启用 Recycle Bin 决定恢复后的"补缀量级"。未启用时是 tombstone reanimation,会丢失链接属性(如组成员关系)。
二、AdRestore 参数与过滤速查(模板可直接改名套用)
各版本参数名称可能略差异,先用
AdRestore /?对齐你环境。以下为通用能力模型。
1)列出所有可恢复对象(预览)
cmd
AdRestore.exe -accepteula
2)按名称/登录名筛选
cmd
AdRestore.exe /filter:"(cn=Alice*)"
AdRestore.exe /filter:"(sAMAccountName=bob)"
3)限定对象类型 + 来源 OU(lastKnownParent)
cmd
AdRestore.exe /filter:"(&(objectClass=user)(lastKnownParent=OU=HR,DC=corp,DC=local))"
4)指定 DC、静默批量恢复
cmd
AdRestore.exe /server:dc1.corp.local /filter:"(objectClass=group)" /restore /quiet
5)按时间窗口(误删时间近 2 小时)
部分版本不直接支持时间过滤,可先全量列出→脚本过滤
whenDeleted
powershell
# 列出后用 PowerShell 过滤 whenDeleted 再调用 /restore
三、恢复后的"补缀剧本"(开箱即用)
建议先恢复到 Quarantine/Recovery OU,体检合格后再搬回业务 OU。
1)单用户回生与补缀(PowerShell)
powershell
param(
[Parameter(Mandatory)][string]$Sam,
[Parameter(Mandatory)][string]$TargetOU
)
$tag = Get-Date -Format yyyyMMdd_HHmmss
$log = "D:\ADRestore\log_$($Sam)_$tag.txt"
$pwd = [System.Web.Security.Membership]::GeneratePassword(16,3)
# 1) 恢复(先预览再执行 /restore)
& "C:\Tools\AdRestore.exe" -accepteula /filter:"(sAMAccountName=$Sam)" /restore |
Tee-Object -FilePath $log
# 2) 移至目标 OU
Import-Module ActiveDirectory
$user = Get-ADUser -LDAPFilter "(sAMAccountName=$Sam)" -ErrorAction Stop
Move-ADObject $user.DistinguishedName -TargetPath $TargetOU
# 3) 补缀:密码、启用、解锁、强制改密
Set-ADAccountPassword -Identity $user -Reset -NewPassword (ConvertTo-SecureString $pwd -AsPlainText -Force)
Enable-ADAccount -Identity $user
Unlock-ADAccount -Identity $user
Set-ADUser -Identity $user -ChangePasswordAtLogon $true
# 4) 留痕
"[$(Get-Date)] Restored $Sam; TempPwd=$pwd; TargetOU=$TargetOU" | Add-Content $log
2)按 OU 批量恢复用户并回填组(基于基线 CSV)
powershell
Import-Module ActiveDirectory
$baseline = Import-Csv .\Baseline_User_Group.csv # 字段: Sam, Groups(; 分隔)
$ouDN = "OU=Sales,DC=corp,DC=local"
# A. 批量恢复 OU 下用户
& "C:\Tools\AdRestore.exe" /server:dc1 /filter:"(&(objectClass=user)(lastKnownParent=$ouDN))" /restore /quiet
# B. 回填组成员(未启 Recycle Bin 时必做)
foreach($row in $baseline){
$user = Get-ADUser -Filter "sAMAccountName -eq '$($row.Sam)'" -ErrorAction SilentlyContinue
if($user){
$groups = $row.Groups -split ';' | Where-Object {$_ -and $_.Trim() -ne ''}
foreach($g in $groups){
try{ Add-ADGroupMember -Identity $g -Members $user -ErrorAction Stop } catch{}
}
}
}
3)计算机对象:重置信任与 GPO 体检
powershell
# 重置域信任(在受管设备上以本地管理员执行)
Reset-ComputerMachinePassword -Server "dc1.corp.local" -Credential (Get-Credential)
# GPO 应用检查
gpupdate /force
四、复制一致性与健康检查
- 复制状态 :
repadmin /replsummary - 对象元数据 :
repadmin /showobjmeta <DC> "<ObjectDN>" - 事件日志:Directory Service / System 中的恢复与复制事件
- 登录/权限回归测试:关键用户/服务账号最少抽样验证
五、安全与合规:留痕、审批、回滚
- 留痕 :所有恢复/移动/回填操作写入集中日志(含操作者、UTC 时间、对象 DN、旧/新 OU)。
- 审批与窗口:批量恢复/组回填须走变更流程,安排在维护窗口。
- 旁路与最小权限:仅授予恢复所需范围(分域/分 OU 的委派权限),坚决避免"全域神权"常驻。
- 回滚 :若发现误恢复,立即记录并移回 Deleted Objects (需谨慎),或将对象禁用+隔离 OU。
六、FAQ(两行见底)
- 恢复后用户仍登不上?
密码未重置或账号未启用;若未启用 Recycle Bin,链接属性缺失需补回组成员。 - 组恢复了但权限不生效?
资源 ACL 的 SID 仍在,但成员没回填 ;按基线回填member。 - 跨站点延迟?
给复制 3--10 分钟,关键权限场景选定源 DC 恢复更稳。 - 没有 lastKnownParent?
老林/旧对象常见;需用命名基线或 CMDB 辅助定位。
七、口袋清单(Cheat Sheet)
text
# 预览所有可恢复对象
AdRestore -accepteula
# 恢复指定用户(交互确认)
AdRestore /filter:"(sAMAccountName=bob)" /restore
# 批量恢复某 OU 下用户(静默)
AdRestore /server:dc1 /filter:"(&(objectClass=user)(lastKnownParent=OU=Sales,DC=corp,DC=local))" /restore /quiet
# 恢复后四件套(未启 Recycle Bin)
Enable-ADAccount / Reset-Password / ChangePasswordAtLogon / Rebuild-GroupMembership
结语
有了这份命令速查 + 自动化剧本 ,AdRestore 就不只是"能用",而是"稳用、快用、可审计 "。把它和你的基线资产清单 、变更流程 、集中日志 串起来,你的 AD 事故恢复会从慌乱的临时救火,变成可复制的标准动作 。
下一篇我们将按你的指令继续推进(或切换到新的章节/工具),把整套 AD 运维与取证能力拼齐成闭环。