如何使用 Active Directory 回收站保存培根
如果您不小心删除了 Active Directory 用户、计算机或 OU,您知道可以将其恢复吗?如果启用,Active Directory 回收站可以帮助您恢复该 AD 对象。
在本文中,您将了解如何使用 Active Directory 回收站立即启用和恢复对象!
如果您需要功能齐全的服务来轻松备份和恢复 Active Directory 对象等,请查看 Veeam Backup & Replication。
Active Directory 中的回收站如何工作?
当您启用回收站时,它会告诉 AD 不要立即从 AD 数据库中删除对象。删除 AD 对象时会发生两个阶段。
逻辑删除的对象
当您删除 AD 对象时,您可以认为该对象已“逻辑”删除。当一个对象被“逻辑”删除时,它实际上并没有从 AD 数据库中删除。相反,它只是被隐藏并移动到 CN=Deleted Objects 容器中,并且该对象的属性 isDeleted 设置为 TRUE。
逻辑删除的对象可以恢复的时间由
msDS-deletedObjectLifetime属性设置。默认值与墓碑生命周期相同,默认为 180 天。
墓碑回收
一旦逻辑删除的对象超过 msDS-deletedObjectLifetime 属性定义的已删除对象生命周期,该对象就会被视为逻辑删除。此时,该对象是不可恢复的。
超出 msDS-deletedObjectLifetime 时间后,isRecycled 属性将设置为 TRUE,并且 isDeleted 属性仍保留正确。墓碑生命周期默认为 180 天。
一旦 AD 对象超过逻辑删除生存期,该对象就会通过垃圾收集从数据库中物理删除。
使用 ADAC 启用回收站
默认情况下,AD 回收站未启用。要使用这个方便的功能,您必须手动启用它。不要忘记,直到为时已晚!
要启用回收站:
- 导航到已加入域的工作站或域控制器上的 Active Directory 管理中心 (ADAC)。
- 单击左侧的域,然后找到右侧的任务菜单。
- 单击启用回收站选项以启用回收站,如下所示。
然后,ADAC 将提示您确认是否启用回收站。
根据您的域的大小,传播设置可能需要一些时间。
刷新后,您应该会看到启用回收站选项现在呈灰色。
使用 PowerShell 启用 Active Directory 回收站
如果出于某种原因,您需要自动启用回收站,则始终可以使用 PowerShell 和 Enable-ADOptionalFeature cmdlet 来实现。
以下是可用于在 PowerShell 中启用回收站的代码片段。下面的示例在林级别为 ad.lc-test.local 林启用回收站。
$Params = @{
"Identity" = 'Recycle Bin Feature'
"Scope" = 'ForestOrConfigurationSet'
"Target" = 'ad.lc-test.local'
}
Enable-ADOptionalFeature @Params使用 Active Directory 回收站 (ADAC) 恢复对象
启用回收站后,您现在就可以利用它了!我们首先从使用 ADAC 开始。
删除对象后但逻辑删除生存期到期之前:
- 导航到 ADAC 中的已删除对象容器。该容器保存所有已删除的 Active Directory 对象。
2. 接下来,找到要恢复的对象。在本例中,我们正在寻找 TestUser2 对象。在右侧的“任务”菜单上,有四个选项。
- 恢复 - 将对象恢复到其原始组织单位 (OU)。
- 恢复到... - 不是将对象恢复到原始位置,而是选择其他组织部门来将对象恢复到其中。
- 查找父级 - 此选项将直接带您前往包含该对象的组织部门。
- 属性 - 查看非常有限的属性,例如修改的、创建的、对象类、规范名称或更新序列号 (USN)。
在此示例中,我们将对象恢复到其位于用户容器中的原始组织单位。
3. 单击恢复按钮,如下所示,该对象现在返回到用户 OU 下。
使用 Active Directory 回收站恢复对象 (PowerShell)
与该技术一样有用的是,使用 PowerShell 来完成与在 GUI 下完成的任务相同的任务通常更容易、更易于编写脚本。要使用 PowerShell 恢复 AD 对象:
- 在加入域的计算机或域控制器上,打开 PowerShell 并找到已删除的对象。确保您已安装 ActiveDirectory 模块。
相关:如何安装 Active Directory 模块
2. 使用 Get-ADObject 命令找到要删除的对象。
相关:Get-ADObject:使用 PowerShell 报告 Active Directory
您可以通过几种不同的方式查找对象,但始终使用 IncludeDeletedObjects 参数。要查找“已删除对象”容器中的所有对象,必须使用此参数。
如果您使用 -Filter * 等广泛的过滤器单独运行 Get-ADObject,您将看到大量不必要的结果。要仅定位那些应位于回收站中的结果,您可以像这样过滤对象。
相关:学习 PowerShell 中的 Active Directory 和 LDAP 过滤器
相反,创建一个过滤器来查找 isDeleted 属性设置为 true 且帐户名包含字符串 *DEL:* 的所有对象。此过滤器应该只返回已删除的对象。
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*"' -IncludeDeletedObjects
使用 Get-ADObject 找到对象后,您现在可以将这些对象通过管道传输到 Restore-ADObject 命令。
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*"' -IncludeDeletedObjects | Restore-ADObject一旦恢复(希望)发生,您应该验证对象是否已恢复。为此,请再次运行 Get-ADObject 命令并确认您不再看到返回的对象。如果没有,那你就可以走了!
您还可以选择运行 Get-ADUser 或 Get-ADComputer 以确保对象确实显示。
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*"' -IncludeDeletedObjects
Get-ADUser -Identity 'TestUser5'清空 Active Directory 回收站
如果您想删除所有回收的 AD 对象,可以使用 PowerShell 来执行此操作。像之前一样找到所有已删除的对象,并将它们通过管道传输到 Remove-ADObject 命令,如下所示。
在下面的示例中,Confirm 参数设置为 false。使用此参数将立即删除每个对象,无需任何确认!
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*DEL:*"' -IncludeDeletedObjects | Remove-ADObject -Confirm:$false更改墓碑的寿命
默认情况下,Active Directory 回收站的逻辑删除生存期为 180 天。但也许你想改变这一点。同样,使用 PowerShell,您可以实现这一目标。
- 首先,使用下面的代码片段找到现有的生命周期,以确保它尚未按要求设置。该值存储在 tombstoneLifetime AD 属性中。
$ADNamingContext = (Get-ADRootDSE).configurationNamingContext
$Params = @{
"Identity" = "CN=Directory Service,CN=Windows NT,CN=Services,$ADNamingContext"
"Partition" = $ADNamingContext
"Properties" = '*'
}
Get-ADObject @Params | Select-Object -Property tombstoneLifetime2. 接下来,将逻辑删除生命周期更改为其他值。假设您希望将生命周期延长至一整年或 365 天。您可以通过使用 Set-ADObject cmdlet 并向其传递以下所有必需参数来完成此操作。
$ADNamingContext = (Get-ADRootDSE).configurationNamingContext
$Params = @{
"Identity" = "CN=Directory Service,CN=Windows NT,CN=Services,$ADNamingContext"
"Partition" = $ADNamingContext
"Replace" = @{tombstoneLifetime='365'}
}
Set-ADObject @Params此更改将立即生效,无需重新启动任何服务。








