Active Directory 工具学习笔记(10.11):AdRestore 实战脚本与命令速查——从事故回滚到合规留痕

Active Directory 工具学习笔记(10.11):AdRestore 实战脚本与命令速查------从事故回滚到合规留痕

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 运维与取证能力拼齐成闭环。

相关推荐
diudiu96282 小时前
Logback使用指南
java·开发语言·spring boot·后端·spring·logback
222you2 小时前
SpringBeanFactory
java·服务器·前端
whale fall2 小时前
【雅思】王陆语料库11.3
笔记·学习
C++业余爱好者2 小时前
JVM优化入门指南:JVM新生代、老年代的核心概念与内存分配逻辑
java·开发语言·jvm
韩凡2 小时前
【java中的SSO】
java·开发语言
代码不停2 小时前
JVM基础知识
java·jvm·java-ee
白露与泡影2 小时前
60亿消息表如何分库分表?
java·开发语言·面试
郭子涵本人2 小时前
嘉立创eda学习
学习
FAFU_kyp2 小时前
银行技术岗位招聘面试题准备
java·spring boot·spring