Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

如何恢复 Active Directory 对象属性

如何恢复 Active Directory 对象属性

Aug 12, 2025

Active Directory(AD)是一个数据库以及一组服务,可对 IT 基础设施资源进行集中管理。它将用户与完成工作所需的资源连接起来。因此,技术人员必须能够快速检查并恢复因硬件故障、网络攻击、脚本错误以及其他问题而被修改或删除的 AD 属性。否则,用户将无法访问与以前相同的资源,从而导致生产力损失、效率低下、不满意的客户以及品牌形象受损。

精选相关内容:

阅读本指南,了解如何将 Active Directory 属性恢复到最后保存的配置。本页还介绍用于回滚和恢复 AD 属性的 PowerShell 技巧与窍门。

当出现以下情况时,您需要能够回滚或恢复 AD 属性:

  • IT 团队中的某人犯了一个错误,导致一个或多个 AD 对象的属性受到影响。 例如,假设一名 IT 技术人员不小心使用了错误的 PowerShell 脚本。该脚本本应是为某些 AD 用户帐户添加邮寄地址信息,但却会将域中每个用户对象的 address 属性当前值替换为星号。您必须回滚这些更改以恢复正确的地址。
  • 恶意行为者获得对 AD 网络的访问权限,并删除或编辑 AD 对象的属性。 您必须回滚或恢复这些属性,以确保一切都处于正常状态。

你可以使用 Active Directory 回收站来恢复 AD 属性吗?

简而言之,不行。

Active Directory Recycle Bin旨在在短时间内保留某些已删除的 Active Directory 对象。但 Active Directory 回收站不会存储已被修改的 AD 属性,因此无法帮助完成属性恢复过程。

从技术上讲,你可以尝试建立一个流程:寄希望于你能迅速察觉任何所有不良变更,找到尚未通过复制接收到这些变更的域控制器,并将其对象设为权威。但这样做是不现实的——就像用一张写着“中大奖(win lottery)”的餐巾纸来规划你的退休储蓄计划一样。

如何确保你拥有 AD 属性的备份?

由于 Active Directory 并不保存对象的属性值记录,确保你在需要时能够恢复或回滚属性的第一步,是找到能够保存这类信息的来源。幸运的是,在涉及 Active Directory 系统状态备份时,可用的备份工具并不少。

Windows Server Backup(WBAdmin)

一种选择是使用 Microsoft Windows Server Backup(WBAdmin)。在计算机上安装 Windows Server Backup 工具后,将会安装 wbadmin.exe 命令行工具。同时,它还提供对用于 Windows Server Backup 的 Windows PowerShell cmdlet 以及 Windows Server Backup MMC 管理单元(snap-in)的访问。这三种方式本质上只是利用同一个底层应用程序的不同方法,因此通过任意一种方式创建的备份,在其他所有方式中都可见。

你可以通过以管理员权限打开“提升权限”的命令提示符来访问 WBAdmin.exe。为此,请点击 开始,右键单击 命令提示符,然后选择 以管理员身份运行

Image

使用 WBAdmin 时需要注意一个重要的限制:如果将其配置为将备份存储在特定文件夹中,则只保留备份的最新副本;后续的备份会覆盖先前备份的内容。

为避免此问题,以下脚本将创建一个以当前日期(YYYYMMDD 格式)命名的文件夹,然后使用 WBAdmin 的 START BACKUP 命令将 Active Directory ntds.dit 文件备份到该文件夹中:

      @echo off
set backupRoot=\FILESHARENtdsBackups
set backupFolder=%date:~-4,4%%date:~-10,2%%date:~7,2%
set backupPath=%backupRoot%%backupFolder%
mkdir %backupPath%
wbadmin start backup -backuptarget:%backupPath% -include:C:WindowsNTDSntds.dit -quiet
      

此操作的结果包括对 ntds.dit 文件的 Volume Shadow Copy Service(VSS)快照。

这种方法的缺点是,生成的文件会明显大于 ntds.dit 文件。例如,下方截图显示了一个 20MB 的 ntds.dit 文件的备份大小。这种额外的磁盘占用在某些实验室环境中可能不是什么大问题,但在生产环境中则很难很好地扩展。

Image

Ntdsutil.exe

Microsoft 提供的另一个选项是 Ntdsutil.exe,它是一个用于访问和管理 Windows Active Directory database 的命令行工具。Ntdsutil 的功能非常强大,甚至可以说是“危险”的,因此在生产环境中学习如何使用它并不合适。不过,这主要是因为它包含了一套令人难以置信的有用命令。

例如,Ntdsutil 具有 SNAPSHOT 命令,可在执行时捕获 Active Directory 的状态:

Image

这种方法的主要缺点在于,Ntdsutil 备份会写入托管 Active Directory 的卷,这并不理想。

如何使用 WBAdmin 和 Ntdsutil.exe 恢复属性?

现在,让我们一步步使用 WBAdmin 和 Ntdsutil.exe。我们将使用 Active Directory Domain Services Database Mounting Tool (DSAMAIN) 来挂载隐藏在备份中的 ntds.dit 文件,以便我们可以使用 LDAP 对其进行探索。

1. 首先,我们需要找到由 WBAdmin 创建的某个 VHD 映像,将其挂载,并为其主分区分配一个驱动器号。

Image

2. 接下来,在已挂载的备份中找到 ntds.dit 文件的路径,使用管理员权限打开命令提示符,然后使用以下命令来挂载 ntds.dit 文件:

dsamain -dbpath “E:WindowsNTDSntds.dit” -ldapport 10389

Image

关闭命令提示符将会停止 DSAMAIN,因此请确保在完成系统状态恢复之前一直保持其打开。

3. 现在 WBAdmin 备份已挂载,我们将挂载由 Ntdsutil 创建的快照。为此,请以管理员身份打开一个新的命令提示符,使用 snapshot 命令列出我们的备份,选择要挂载的一个备份,并复制 Ntdsutil 分配的驱动器路径位置:

Image

4. 接下来,找到位于 Ntdsutil 分配路径下的 ntds.dit 文件路径,使用管理员身份再打开一个命令提示符,然后使用以下命令来挂载 ntds.dit 文件:

      dsamain -dbpath “C:\$SNAP_201903261110_VOLUMEC$\Windows\NTDS\ntds.dit” -ldapport 20389
      
Image

5. 之后,我们会更改我们可靠的测试用户的 Description 属性 Delete Q. Me

6. 现在我们可以打开 PowerShell,并使用 Get-ADUser cmdlet 来查看我们的测试用户。Active Directory 默认监听 389 端口,而我们把备份挂载到了 10389 和 20389 端口。使用可选的 Server 参数,就能同时查看测试用户在实时环境以及两个已挂载备份中的样子。

Image

如您所见,Description 属性的当前值是“Oops”,而两个备份中都包含先前的值“Demo User Account”。

7. 现在我们可以使用 PowerShell 的 Get-ADUser cmdlet,将此属性还原为我们备份之一中捕获到的值。如果我们从某个已挂载的备份中获取该对象的副本,那么就可以使用该对象副本中的属性副本来设置“实时对象”对应属性的值:

      $UserBackup = Get-ADUser -Identity dqme -Properties Description -Server dc01:10389

Set-ADUser -Identity dqme -Description $UserBackup.Description -Server dc01:389
      
Image

请注意,Description 属性的值已恢复为已挂载备份中捕获到的值。

看起来很简单,但那只是一个实验练习:只涉及对某一个特定对象进行一次特定属性的更改。我们还知道哪些备份包含了恢复操作所需的信息。在现实的恢复场景中,这个过程可能会变得很糟糕,尤其是在你赶着恢复服务的时候。

使用 Netwrix 解决方案恢复 Active Directory 属性

使用 WBAdmin 和 Ntdsutil.exe 等工具来恢复 AD 属性可能会非常耗费精力,尤其是在你没有太多资源、时间或精力的情况下。

幸运的是,还有一种快速且易于使用的方法可以恢复 AD 属性——Netwrix’s end-to-end Active Directory Security Solution。该工具功能强大、覆盖全面、功能丰富,能够对不需要的 AD 删除和更改进行快速回滚。这样,你就可以确保业务连续性和客户满意度。

常见问题解答

如何在保留所有属性的情况下恢复已删除的 Active Directory 用户?

当您需要在保留完整属性集的情况下恢复已删除的 AD 用户时,具体做法取决于 Active Directory Recycle Bin 是否已启用。如果已启用,请使用 PowerShell 将用户恢复为包含所有原始属性的状态:

      Get-ADObject -Filter 'DisplayName -eq "Username"' -IncludeDeletedObjects | Restore-ADObject
      

此方法无需任何数据丢失,即可保留组成员身份、权限以及自定义属性。

当无法使用 AD Recycle Bin 时,您需要通过使用 Ntdsutil.exe 等工具,并结合最近的系统状态备份来执行“权威恢复(authoritative restore)”。该过程要求将域控制器离线,然后从备份进行还原,这意味着可能会丢失部分近期变更。关键在于定期备份,并理解“权威恢复”会影响整个目录,而不仅仅是单个对象。 Data security that starts with identity 意味着:在恢复过程中保持完整的用户属性一致性/完整性至关重要,这对于保留访问控制和安全边界非常关键。

当未启用 Active Directory Recycle Bin 时该怎么办?

如果未启用 AD Recycle Bin,您的恢复选项会变得更复杂,但并非不可能。主要做法是使用 Ntdsutil.exe 结合删除发生之前获取的系统状态备份执行权威恢复(authoritative restore)。这需要将域控制器启动到 Directory Services Restore Mode,并从备份中还原 AD 数据库。

权威恢复流程会用较早的备份数据覆盖较新的变更,因此您将丢失备份之后对目录所做的任何修改。这就是为什么主动的备份策略很重要——您无法管理看不见的内容,也无法恢复未备份的内容。为未来的保护,请使用 PowerShell 立即启用 AD Recycle Bin:

      Enable-ADOptionalFeature -Identity "Recycle Bin Feature" -Scope ForestOrConfigurationSet
      

此步骤可将您的恢复能力从复杂的离线流程转变为直接明了的 PowerShell 命令,从而减少停机时间并保障业务连续性。

如何使用 PowerShell 命令还原 AD 属性?

当启用 Recycle Bin 时,PowerShell 提供了还原 AD 属性的最高效路径。首先识别已删除的对象:

      Get-ADObject -Filter * -IncludeDeletedObjects | Where-Object {$_.Name -like "*username*"}
      

找到目标对象后,请将其完整恢复:

      Restore-ADObject -Identity "ObjectGUID"
      

如果要对现有对象进行部分属性恢复,请使用 Set-ADUserSet-ADObject 命令,根据文档或最近的导出结果重建特定属性。一个可行的做法是结合使用 Get-ADUser -Properties * 进行常规的 AD 导出,并配合能够快速重建属性集的恢复脚本。该方法可让你在不影响无关目录对象的情况下,对需要恢复的内容进行细粒度控制。

PowerShell 的优势在于精准——你可以在不引起连带变更的情况下,只恢复所需内容。创建用于复原的脚本,并记录你的处理流程;同时先在非生产环境中进行测试。有效的身份管理需要同时具备对变更内容的可视性,以及对如何响应这些变更的控制能力。

何时对 AD 对象使用权威恢复(authoritative)而非非权威恢复(non-authoritative)?

当你需要在所有域控制器上强制实施特定的 AD 变更,并覆盖较新的修改时,应选择权威恢复(authoritative restore)。该方法最适用于恢复意外删除的对象,或撤销未经授权的大规模更改。权威恢复流程会为已恢复的对象标记更高的版本号,从而确保复制将你恢复的数据传播到整个域。

非权威(Non-authoritative)还原适用于灾难恢复场景:在不更改现有目录数据的情况下,重新构建已失败的域控制器。该方法会从健康的域控制器获取当前 AD 信息,而不是将备份数据强行应用到整个域。

选择取决于范围和目的。权威(Authoritative)还原会影响整个林(forest),应尽量少用——它虽然功能强大,但也会带来较大的干扰。非权威(Non-authoritative)还原只影响本地域控制器,并且能与现有基础设施无缝集成。在这两种情况下,了解复制拓扑(replication topology)并拥有最新的备份都会决定恢复是否成功。Data security that starts with identity means having multiple recovery options and knowing exactly when to use each one.

如何在 Active Directory 中恢复计算机对象?

恢复计算机对象的原则与恢复用户类似,但还需要额外考虑机器身份验证以及域之间的关系。当启用 AD 回收站(AD Recycle Bin)时,请使用以下命令来恢复包含所有属性的计算机帐户:

      Get-ADObject -Filter 'Name -eq "ComputerName"' -IncludeDeletedObjects | Restore-ADObject
      

没有回收站(Recycle Bin)时,计算机恢复会变得更复杂,因为必须重建机器信任关系(machine trust relationships)。在进行权威(Authoritative)还原后,受影响的计算机通常需要重新加入域,因为它们的计算机帐户密码可能无法正确同步。在从备份中恢复计算机对象时,请为这一步额外的操作做好计划。

实用的做法包括在问题发生之前先记录计算机对象的属性。使用 PowerShell 定期导出计算机帐户详细信息,并记录组成员关系、组织单位(OU)位置以及自定义属性。通过这些文档,在无法进行自动恢复时,就能更快地手动重建。计算机对象不仅仅是目录条目——它们是你机器身份基础架构的核心基础;如果恢复不正确,可能会破坏整个环境中的身份验证。

分享到

了解更多

关于作者

Asset Not Found

Joe Dibley

安全研究员

Netwrix 的安全研究员,并且是 Netwrix Security Research Team 的成员。Joe 是 Active Directory、Windows 以及各类企业软件平台与技术方面的专家;他/她研究新的安全风险、复杂的攻击技术,以及相应的缓解措施与检测方法。