如何復原已刪除的 Active Directory 物件:終極指南

作為一種提供 IT 基礎架構資源集中管理功能的全球性身分驗證目錄服務,Active Directory (AD) 是最關鍵的企業應用程式之一。這意味著在發生中斷時,迅速還原服務對於減少服務停機時間至關重要。AD 通常包含大量以階層式結構組織的物件,其中某些物件會依賴其他物件。 由於需要還原複雜的層級結構並手動重建部分資料,還原過程可能相當耗時。這篇部落格文章將說明如何還原已刪除的 Active Directory 物件。

Active Directory 物件還原基礎知識

您可以使用 Windows Server 內建的備份工具,或任何其他受支援的第三方工具,來啟動 Active Directory 還原程序。Active Directory 提供兩種主要的還原方法:

  • Non-Authoritative Recovery 這是還原 Active Directory 的預設方法。此方法僅將網域還原至備份當下的狀態,並允許透過例行複寫來覆寫其後所做的任何物件與容器變更。
  • Authoritative Recovery 包含兩個部分:首先是從備份進行非權威性還原,接著進行權威性還原。主要差異在於,此方法可對整個目錄中的物件及其屬性進行權威性變更。此類還原可能會影響電腦帳戶、信任關係及群組成員資格。

要選擇合適的 AD 還原方法,請考慮以下事項:

  • The cause of the failure: 問題是因物件遭意外或惡意刪除/修改(且已複製至所有網域控制器),還是整個虛擬機器完全故障所致?若是刪除/修改所致,您需要進行權威性還原。
  • Roles and functions 該故障的 Active Directory 伺服器。

用於還原已刪除 AD 物件的原生工具

已刪除的 AD 物件未必會顯示在 Active Directory 使用者與電腦 快照。您可以看到 已刪除的物件 將已刪除的 AD 物件存放於回收站中,並僅透過特殊工具進行還原。

若要使用 Microsoft 原生工具(包括 Windows Server 內建工具)還原 Active Directory (AD) 中已刪除的物件,共有兩種方法:使用 Active Directory 回收站與不使用回收站。這兩種方法之間存在顯著差異。

在不使用 Active Directory 資源回收筒的情況下進行還原

AD Recycle Bin is disabled, 刪除和還原 AD 物件的流程如下:

  1. 當一個物件被刪除時,該物件便會轉變為墳墓標記。
  2. 墓碑物件儲存於 已刪除的物件 用於設定期間的容器 tombstoneLifetime 對於當前網域而言。當物件轉變為墳墓石(亦稱為已刪除物件)時,大部分屬性都會遺失。
  3. 在墓碑生命週期內,您可以還原 AD 物件,但其屬性中不會記錄任何額外資訊。
  4. 當墓碑有效期屆滿時,該物件將被永久刪除,且無法恢復。

下圖顯示了 Active Directory 物件的生命週期,用以說明在沒有 AD 回收筒的情況下還原 AD 物件的原理。

The lifecycle of a deleted Active Directory object when the AD Recycle Bin is disabled

從 AD 資源回收筒中還原

當你……時,情況就會有所不同 turn on Active Directory Recycle Bin:

  1. 當刪除一個 AD 物件時,該物件的狀態會變更為"邏輯刪除"狀態。物件的屬性會保留一段時間,具體時長取決於在設定的期間。 已刪除物件的生命週期 屬性 (msDS-已刪除物件存活時間),這等於 回收物件的生命週期 預設為 180 天。在此期間,您可以還原 Active Directory 中已刪除的物件。
  2. isDeleted 屬性設定為 . 該 是否為回收製品 屬性是 不正確.
  3. 在……之後 已刪除物件的生命週期 當週期結束時,物件的狀態會從 已邏輯刪除回收物品. 當 Active Directory 回收站停用時,回收物件的功能類似於墓碑物件。
  4. 這件回收物品目前仍位於位置 已刪除的物件 容器直到 回收物件的生命週期 定義於 墓碑 終身 屬性將過期。預設情況下,此期間為 180 天。該 是否為回收製品 屬性設定為 . 大部分在邏輯刪除狀態下仍被保留的物件屬性,都會被刪除。
  5. 回收物件的生命週期 (墓碑 終身) 過期後,Active Directory 的垃圾回收機制會徹底清理該回收物件,且此物件將被物理刪除。此時已無法還原該物件。

The lifecycle of a deleted Active Directory object when the AD Recycle Bin is enabled

Active Directory 回收筒:您需要了解的內容

Active Directory 回收筒最初於 Windows Server 2008 R2 中推出,僅限於 PowerShell 環境中使用。自 Windows Server 2012 起,AD 回收筒的圖形使用者介面 (GUI) 才開始提供。預設情況下,AD 回收筒處於停用狀態。

在啟用 AD 回收筒之前,請注意以下事項:

  • 一旦啟用 Active Directory 回收站,網域林中的所有墳墓標記都會被刪除。這表示,若您先刪除 Active Directory 物件,然後再啟用 AD 回收站,將無法還原這些物件。若要還原已刪除的 Active Directory 物件,請先使用不依賴回收站的其他方法進行還原,之後再啟用回收站。
  • 啟用 AD 回收筒後,您即可還原在啟用 AD 回收筒後所刪除的 AD 物件。啟用 AD 回收筒 before 您刪除 AD 物件。
  • 一旦啟用 AD 資源回收筒,便無法再將其停用。此設定無法撤銷。 備份您的 AD 網域控制器 如果您不確定是否需要永久啟用此特點,請在啟用 Active Directory 回收筒之前先進行確認。
  • 啟用 AD 資源回收筒會變更 Active Directory 架構。
  • Active Directory 的大小會不斷增加,因為物件及其屬性在狀態變更後,會暫時保留在 Active Directory 中。

如何使用原生工具還原已刪除的 AD 物件

我們將刪除 Active Directory 中的物件,然後說明如何在啟用與未啟用 AD 回收筒的情況下將其還原。我們將介紹 4 種原生方法:

  • 範例 1:使用 PowerShell
  • 範例 2:使用 ADRestore
  • 範例 3:使用 Ldp.exe
  • 範例 4:從 AD 回收筒還原

前三個範例涉及在不使用 Active Directory 資源回收筒的情況下還原 AD 物件。在第四個範例中,我們應啟用 Active Directory 資源回收筒,刪除某些物件,然後將其還原。

The environment used in the examples:

  • 一台在 Windows Server 2019 上執行的網域控制器,且是該網域林中唯一的網域控制器。
  • 網域名稱是 ID.TEST
  • 我們有多位使用者—— user1, user2, user3、等等,這些都是 A組 在此 AD 網域中。

請注意,以下說明的原生方法無需關閉網域控制器並將其設為離線狀態,即可還原已刪除的 AD 使用者。

範例 1:在 PowerShell 中還原 AD 物件 (Restore-ADObject)

我們來刪除吧 user1 在 Active Directory 中,然後嘗試還原該 user1 物件。我們在網域控制器上執行這些操作。

How to delete and restore deleted AD account

請依照以下步驟還原已刪除的 AD 使用者:

  1. 以系統管理員權限開啟 PowerShell(提升權限的 PowerShell)。
  2. 已刪除的物件的位置 已刪除的物件 容器並擁有該 isDeleted 標記。使用以下命令檢視已刪除的 AD 物件:

Get-ADObject -IncludeDeletedObjects -Filter {IsDeleted -eq $true}

  1. 要還原一個物件,我們應該移除 isDeleted 從此物件中移除標記。我們需要還原 user1. 輸入此指令以顯示所有名稱以 使用者. 為此,我們將這些選項加入篩選條件中: {Isdeleted -eq $true -and Name -like “user*“}

以下指令適用於顯示其他使用者,例如 user2, user3,等等(如果已被刪除):

Get-ADObject -IncludeDeletedObjects -Filter {Isdeleted -eq $true -and Name -like "user*"}

How to view information about a deleted AD user in PowerShell

  1. 請注意 ObjectGUID區別名稱 以取得所需的物件。我們使用 ObjectGUID 因為 user1 就我們的情況而言:

4c723d90-5a05-47c3-9482-c05dc3c6201c

  1. 若要還原已刪除的物件,請執行類似以下的指令:

Restore-ADObject -Identity "GUID or DistingushedName here" -NewName "new_restore_name"

就我們的情況而言:

Restore-ADObject -Identity "4c723d90-5a05-47c3-9482-c05dc3c6201c" -NewName "user1-restored"

  1. 若需,您可以使用位置 -TargetPath 金鑰並為新位置設定一個識別名稱 (DN),例如:

CN=Users,DC=domain,DC=net

執行該指令並還原 Active Directory 物件後,我們並未看到 user1使用者 目錄及在 A組 該使用者先前所在的位置。

If you recover deleted AD accounts without the Recycle Bin, group membership is not restored

這是因為,若在刪除 Active Directory 物件時未使用 AD 回收筒,幾乎所有物件屬性都會遺失,即使該物件本身已還原亦然。

We restore deleted AD accounts and can find the accounts in Domain Users

我們可以找到已還原的 AD 物件 user1-已還原網域使用者 群組。使用者登入名稱僅以 Windows 2000 之前的格式儲存。該 user1-已還原 該帳戶目前處於停用狀態。重點在於原始的 SID 會被保留,且與此使用者相關的檔案和資料夾的所有 NTFS 權限仍保持有效。

Only the pre-Windows 2000 logon name is preserved after restoring an AD user

註: 如果您建立一個新的 AD 物件,而非從墳墓石中還原已刪除的物件,那麼 objectGUID 以及 objectSID 屬性已設定,且需要更新對此物件的參照。

我們需要編輯登入名稱、啟用該帳戶、更新密碼,並將此使用者加入 A組. 要正確還原所有屬性與成員資格,需要進行大量手動操作。

範例 2:使用 ADRestore 還原已刪除的 AD 使用者

在我們的第二個範例中,Active Directory 資源回收筒仍然處於停用狀態。

使用者2,該組織是 A組, 已被刪除。

我們即將使用 free ADRestore 用於還原 Active Directory 中已刪除物件的工具。此工具可於 Microsoft 網站上取得:

https://docs.microsoft.com/en-us/sysinternals/downloads/adrestore

  1. 下載該工具,並將 ZIP 壓縮檔中的內容解壓縮至特定資料夾,例如: C:programsadrestore
  2. 在 PowerShell 中前往此目錄:

cd c:programsadrestore

我們以系統管理員身分執行 PowerShell。

  1. 檢視已刪除項目的相關資訊 user2 透過在具有管理權限的 PowerShell 中指定確切的使用者名稱:

Get-ADObject -Filter 'SAMAccountName -eq "user2"' -IncludeDeletedObjects

Viewing the information about the deleted user in PowerShell

Deleted: True 確認此使用者已刪除。

CN=Deleted Objects 表示該物件(使用者帳戶)已移至 已刪除的物件 容器。

  1. 請注意 ObjectGUIDuser2:

c6c121a3-d664-4d71-a6ef-9ad26b833fe6

  1. 請輸入以下命令以還原該物件: adrestore 透過指定 ObjectGUID 所需的使用者:

.adrestore -r c6c121a3-d664-4d71-a6ef-9ad26b833fe6

類型 y 然後按下 Enter 請確認並繼續。

How to restore Active Directory object with ADRestore in PowerShell

  1. 一旦刪除該物件(user2) 已恢復,請在 Active Directory 使用者與電腦 視窗。

結果與第一個範例相似。該 user2 將在不包含任何附加資料(例如屬性及群組成員資格)的情況下進行還原。

AD recovery – the user is restored

範例 3:使用 Ldp.exe 還原已刪除的 AD 使用者

本指南中用於還原已刪除 AD 的第三種方法 使用者3 無需使用 AD 資源回收筒。在此方法中,我們使用一款免費的 ldp.exe LDAP 工具。

Ldp 工具是 Microsoft 原生工具,隨 Windows Server 作業系統(例如 Windows Server 2008、2012 等)一併提供。此工具是一款輕量級的 LDAP 客戶端,具備 Windows 檔案總管風格的圖形使用者介面 (GUI),可讓您檢視和編輯 Active Directory 項目。

  1. 點擊 Start > Run (或按下 Win+R).
  2. 類型 ldp執行 輸入提示並按下 Enter.

Running the Ldp tool for restoring AD objects after deleting

  1. 點擊 Connection > Connect 在 Ldp 主視窗中。

Connecting to a server in the Ldp.exe utility

  1. 請在設定所需的參數 連線 視窗。

Server: 請輸入您的 AD DC 伺服器的 IP 位址或名稱。

Port: 預設使用 389 或 636。

點擊 OK.

Setting up the connection parameters in the Ldp tool

  1. 點擊 Connection > Bind 在 Ldp 主視窗中。

Binding to Active Directory in the LDP.exe tool

  1. 鑑於我們已以網域管理員身分登入網域控制器,我們選擇第一個選項:
  • Bind as currently logged on user.

您可以使用第二個選項(使用憑證進行綁定) 並設定使用者名稱、密碼以及您要連線的網域。

點擊 OK 繼續。

Selecting binding options

  1. 點擊 Options > Controls 在 Ldp 主視窗中。

在以系統管理員身分開啟的 PowerShell 中,您可以執行該指令來查看已刪除使用者的相關資訊。

Get-ADObject -Filter 'SAMAccountName -eq "user3"' -IncludeDeletedObjects

objectGUIuser3 是:

17ede5dc-b527-4ae4-ba5b-3ed50855be80

選擇 Return deleted objects載入預設值 的下拉式選單 控制項 視窗。點擊 OK.

Selecting Return deleted objects in Controls to restore deleted AD objects

  1. 點擊 View > Tree 在 Ldp 主視窗中。

輸入一個 BaseDN. 我們的網域名稱是 ID.TEST 以及我們的 BaseDNDC=ID,DC=TEST

點擊 OK 繼續。

Entering a baseDN when using Ldp.exe

  1. 在樹狀結構中導航至您需要還原的已刪除物件(user3 (在本例中,即為我們要從 AD 回收站還原的物件)。展開一個網域,然後展開 已刪除的物件 容器。
我們的使用者名稱是 user3. 此物件的 ObjectGUID 會顯示在已啟用樹狀檢視的 Ldp 視窗中。如您所見,此物件的 ObjectGUID 為 user3 與上方的 PowerShell 顯示內容相同。

註: 您可以在視窗的右側窗格中查看已執行操作的結果。

Selecting a deleted AD user in the window of the LDP tool

  1. 右鍵點擊該物件(user3 (以我們的情況為例)並點擊 Modify 在右鍵選單中。

There is the need to modify some values to restore AD account in the Ldp tool

  1. DN 已自動選取。

類型 isDeleted編輯條目屬性 欄位。

選擇 Delete操作 選項。

點擊 Enter 此視窗中的按鈕。

Selecting the isDeleted attribute to delete for the AD object we want to recover

  1. 類型 distinguishedName價值觀 欄位。

請輸入要還原物件的數值,例如: CN=user3,OU=Users,DC=ID,DC=test

您可以為還原作業輸入自訂 DN 位置的值。

請選擇 Replace 操作。

點擊 Enter 此介面中的按鈕 修改 視窗。

請選擇 Synchronous 以及 Extended 複選框。然後點擊 Run.

Entering values and selecting the Replace operation

當您使用 Ldp(LDAP)工具透過此方法將 AD 物件還原至選定位置後,包含屬性的額外資料(例如密碼、群組成員資格等)將不會一併還原。 您需要手動設定這些參數。

一般來說,結果與其他兩種方法所達成的結果相似,這兩種方法同樣不使用 AD 回收站。

讓我們啟用 Active Directory 回收站,並觀察在 Active Directory 中還原已刪除物件時所呈現的不同結果。

範例 4:如何從 Active Directory 資源回收筒還原

在開始執行還原之前,讓我們先來看看如何啟用 AD 資源回收筒。

如何啟用 Active Directory 資源回收筒

建議您 備份您的 Active Directory 在啟用 AD 回收站之前,請先備份網域控制器。這樣一來,如有需要,您便能回滾至 AD 回收站已停用且保留既有墳墓標記的狀態。

執行此指令以檢查 Active Directory 回收站是否已啟用:

Get-ADOptionalFeature "Recycle Bin Feature" | select-object name,EnabledScopes

如果你看到空括號 {} 在輸出結果中,AD 資源回收筒已被停用。

How to view AD Recycle Bin status (enabled or disabled) in PowerShell

以下是啟用 AD 回收筒的需求。

  • 您必須以網域管理員身分,或以"Enterprise 管理員"或"架構管理員"群組成員的身分登入 Windows Server。
  • 若要啟用 Active Directory 資源回收筒,森林功能層級必須為 Windows Server 2008 或更高版本。

啟用 AD 回收筒主要有兩種方法:透過 PowerShell 以及透過伺服器管理員。

1. Enabling AD Recycle Bin in PowerShell

請在以系統管理員身分執行的 PowerShell 中執行以下指令,以啟用 Active Directory 回收筒:

Import-Module ActiveDirectory

一般來說,啟用 AD 回收筒的指令如下:

Enable-ADOptionalFeature 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target

就我們的情況而言,包含我們網域名稱的正確指令是:

Enable-ADOptionalFeature -Identity 'CN=Recycle Bin Feature,CN=Optional Features,CN=Directory Service,CN=Windows NT,CN=Services,CN=ConfigurationDC=id,DC=test' -Scope ForestOrConfigurationSet -Target 'id.test'

請輸入您的網域名稱,而非 id.test 用於我們的範例中。

2. Enabling AD Recycle Bin in Server Manager

  1. 開啟"伺服器管理員"。按一下 Start 並輸入 server manager 或按下 Win+R. 在 執行 視窗,類型 dsac.exe 並點擊 Enter.
  2. 前往 Tools > Active Directory Administrative Center伺服器管理員 視窗。

Opening the Active Directory Administrative Center

  1. 請在左側窗格中選取您的林根網域。我們選取 ID (local) 就我們的情況而言。
  2. 點擊 Enable Recycle Bin 在右側窗格中。

How to enable Active Directory Recycle Bin in the AD Administrative Center

  1. 請閱讀警告並點擊 OK啟用"資源回收筒"確認功能 請點擊此處繼續。

Refresh AD Administrative Center after you turn on AD Recycle Bin

  1. 您需要重新整理 Active Directory 管理中心視窗。請按一下 Refresh 管理中心視窗右上角的按鈕。
  2. 之後, Enable Recycle Bin 該選項會變為灰色(不可用)。
  3. Deleted Objects 當您點擊網域以展開內容時,該容器會出現在選單中。

Locating an object to restore from AD Recycle Bin

  1. 請在 PowerShell 中執行以下命令,以確保已啟用 Active Directory 回收筒:

Get-ADOptionalFeature "Recycle Bin Feature" | select-object name,EnabledScopes

若要查看更多關於特點的資訊,請使用此指令:

Get-ADOptionalFeature -filter *

How to check that the AD Recycle Bin in enabled in PowerShell

從 Active Directory 資源回收筒還原使用者

我們來刪除吧 user4,該組織是 A組 在我們的 id.test 網域,就像我們在之前的範例中對其他使用者所做的那樣。

Deleting a user in Active Directory

Server Manager > Active Directory Administrative Center 並選取一位已刪除的使用者。 使用者4 在我們的案例中,這是我們想要從 Active Directory 資源回收筒還原的物件。

對於位於資源回收筒中的已刪除 Active Directory 物件,主要有四種選項:

  • Restore – 將已刪除的 AD 物件還原至原始的組織單位
  • Restore To – 選擇另一個組織單位作為還原已刪除 AD 物件的目的地
  • Locate Parent – 開啟原始的組織單位,該單位曾儲存已刪除的物件
  • Properties – 檢視已刪除物件的某些屬性,例如 建立, 已修改, 規範名稱, 物件類別更新序列號

若要將使用者還原至原始位置,請按一下 Restore 選單的位置在視窗左側。

User4 is the object we need to restore from AD Recycle Bin

使用者4 已作為 Active Directory 物件還原至相同位置,並保留所有相關資料與屬性。群組成員資格亦已保留,且 user4 是……的成員 A組 修復後。

A user has been restored with attributes and group membership

在 PowerShell 中,從 Active Directory 資源回收筒還原已刪除的 AD 使用者的指令如下:

Get-ADObject -Filter {displayName -eq "user4"} -IncludeDeletedObjects | Restore-ADObject

變更 user4 指向您要在伺服器上還原的物件。

因此,若您未執行 Active Directory 備份.

如何變更 AD 回收箱中的保留時間

您可以變更某些 Active Directory 回收筒設定,以延長在 Active Directory 中還原已刪除物件的時間。我們將說明如何變更以下兩項設定:

  1. 墓碑的壽命(墓碑 終身)
  1. 已刪除物件的生命週期 (msDS-已刪除物件存活時間)

註: 提高這兩個參數的數值可能會影響 Active Directory 的效能。

如何在 PowerShell 中檢查當前的墓碑存活時間

請使用以下這組指令,在提升權限的 PowerShell 中查看當前的暫存區存活時間:

Import-Module ActiveDirectory

$ADForestconfigurationNamingContext = (Get-ADRootDSE).configurationNamingContext

$DirectoryServicesConfigPartition = Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,$ADForestconfigurationNamingContext" -Partition $ADForestconfigurationNamingContext -Properties *

$TombstoneLifetime = $DirectoryServicesConfigPartition.tombstoneLifetime

Write-Output "Active Directory’s Tombstone Lifetime is set to $TombstoneLifetime days `r "

How to view AD Recycle Bin tombstone lifetime in PowerShell

  1. 開啟 ADSI 編輯 這是 Windows Server 2019 中預先安裝的標準工具。

您可以在以下位置找到此工具:

C:ProgramDataMicrosoftWindowsStart MenuProgramsAdministrative Tools

或透過此路徑:

%SystemRoot%system32adsiedit.msc

您可以點擊 Start 並輸入 ASDI Edit 以快速執行該工具。

How to open ADSi Edit in Windows

  1. 右鍵點擊 ADSI Edit 在視窗中並點擊 Connect to 在右鍵選單中。

Connecting to an Active Directory domain controller in ADSI Edit

  1. 連線設定 視窗中,請設定以下參數:
  • 姓名: Configuration
  • 連接點: Select a well known Naming Context > Configuration
  • 電腦: Default

點擊 OK 以套用這些設定。

ADSI connection settings

  1. 包含 Active Directory 設定參數的樹狀結構現已顯示於 ADSI 編輯 工具。
  2. 前往 Configuration > CN=Configuration > CN=Services > CN=Windows NT > CN=Directory Service
  3. 右鍵點擊 CN=Directory Service 然後在快顯選單中,按一下 Properties.

Opening properties for Directory Service

  1. 向下滾動房源清單,找到 tombstoneLifetime. 正如我們先前所確認的,預設值是 180 天。
  2. 雙擊 tombstoneLifetime 以編輯設定值。

How to change Tombstone Lifetime

  1. 請輸入新值,例如, 365 並點擊 OK 以儲存設定。

Changing tombstoneLifetime

註: 若將該值設為 null <not set>, 則墓碑的有效期將自動設定為 60 天,因為此期間已作為 null 值的預設值硬編碼至系統設定中。

  1. 新值已設定。

Tombstone Lifetime is changed

  1. 點擊 OK 儲存設定並關閉 Properties 視窗。

您可以透過使用上述說明的一組指令,確認該值已在 PowerShell 中設定完成。

Checking a new Tombstone Lifetime value in PowerShell

如何在 PowerShell 中編輯墳墓石存活時間

以系統管理員身分開啟 PowerShell。

在提升權限的 PowerShell 中執行一系列指令,以設定新的墓碑存留時間值:

Import-Module ActiveDirectory

$ADForestconfigurationNamingContext = (Get-ADRootDSE).configurationNamingContext

Set-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,$ADForestconfigurationNamingContext" -Partition $ADForestconfigurationNamingContext -Replace @{tombstonelifetime='366'}

請使用上一節所述的相關指令集,檢查更新後的墓碑存活時間。

How to change tombstone lifetime for AD recovery in PowerShell

如何變更已刪除物件的生命週期

msDS-已刪除物件存活時間 此屬性決定已刪除物件的生命週期。您可以透過 ASDI 編輯版本 工具,就像我們編輯墓碑壽命參數時所做的那樣。

前往:

Configuration > CN=Configuration,DC=ID,DC=TEST > CN=Services > CN = Windows NT > CN=Directory Service

CN=Directory Service,找到位置 msDS-deletedObjectLifetime 設定屬性並編輯其值。該值已設為 null 預設情況下。這表示已刪除物件的生命週期等同於墓碑的生命週期。

您可以設定的最小值是 2 (也就是說,2 天)。

How to change the Deleted Object lifetime

原生 AD 還原工具的限制

讓我們總結一下使用原生 AD 還原工具與方法的限制:

  • 這其中涉及大量手動操作,例如執行指令,或在提供的工具程式圖形化使用者介面中設定所需參數。
  • 搜尋與還原的過程可能相當耗時。
  • 還原後,使用者密碼將不會被保留。您需要為每位使用者重新設定密碼。
  • 您需要手動為還原的物件新增某些物件或屬性。
  • Active Directory 回收筒可改善還原 AD 物件的流程,並能還原大部分物件屬性。然而,若在刪除物件前未啟用此特點,則無法發揮作用。
  • 當您啟用 Active Directory 回收筒時,目錄資訊樹 (DIT) 的大小將會增加。
  • 如果已刪除的 Active Directory 物件自刪除之日起已超過墳墓石存留時間,則無法還原這些物件。

幸運的是,您可以透過 Active Directory 備份來繞過 AD 回收筒的時間限制。

從備份還原 Active Directory 物件

從備份中還原已刪除的 Active Directory 物件是最可靠的方法,無論 Active Directory 回收筒是否啟用,皆可藉此還原已刪除的 AD 物件。此備份方法涉及備份 Active Directory,或是備份運行於實體伺服器或虛擬機器上的整個網域控制器。

我們將說明如何使用通用資料保護解決方案,從備份中還原已刪除的 Active Directory 物件 NAKIVO Backup & Replication:

  • 我們已經對 Active Directory 網域控制器執行了備份。在此範例中,網域控制器安裝於 VMware vSphere 中的虛擬機器 (VM) 上,而我們已備份了整個虛擬機器。
  • 作業系統為 Windows Server 2019,與本文先前舉出的範例相同。
  • 該網域名稱是 domain1.local 在此範例中,但該網域的其他設定與前一個完全相同。

需求

用於還原已刪除 AD 物件的伺服器須符合以下需求:

  • 必須安裝 Visual Studio 2015 的 Visual C++ 重新發行套件。該 vc_redist.x86.exe (v.2015) 安裝程式可於 Microsoft 網站上取得。
  • 必須啟動 iSCSI 發起者服務。
  • 必須開啟 TCP 5000 埠。
  • 必須安裝 PowerShell 的 Active Directory 模組。

刪除 AD 物件

我們來刪除這個組織單位吧 單元1 在我們的網域中,即 domain1.local. 該組織單位包含三位使用者: user1, user2 以及 user3.

Deleting users in Active Directory

從備份中還原已刪除的 AD 物件

開啟 NAKIVO 備份解決方案的網頁介面。

選取包含 Active Directory 網域控制器備份的 VMware vSphere 虛擬機器備份工作。

點擊 Recover > Microsoft Active Directory objects.

Starting to recover deleted AD objects

Microsoft AD 伺服器的物件還原精靈已開啟。

  1. Backup. 從已選取的備份中選取所需的虛擬機器。接著選取一個還原點。在本例中,該備份包含一台搭載 AD 伺服器的虛擬機器(虛擬機器名稱是 部落格-Win19-DC) 並選取最新的還原點。

點擊 Next 在每個步驟中繼續。

Selecting a backup and recovery point from which to recover Active Directory objects

  1. Recovery Server. 選擇還原伺服器設定:
  • Recovery Server: 請選擇一臺還原伺服器作為還原已刪除 AD 物件的目的地。我們會將這些物件還原至同一臺虛擬機器。您可以展開清單,並從您的清單中選取一臺伺服器或虛擬機器。
  • Server hostname or IP: 請輸入所選虛擬機器或伺服器的主機名稱或 IP 位址。
  • Username: 請輸入網域管理員或其他在該網域中具備適當權限的使用者名稱。在本範例中,使用者名稱是 domain1 管理員
  • Password: 請輸入已定義使用者的密碼。

Selecting a recovery server for AD recovery

點擊 Test Connection. 若您已通過測驗,請點擊 Next.

Configuring recovery server settings and testing the connection

註: 請確認 iSCSI 發起者服務已在目標 Windows Server 電腦(即您要還原 AD 物件的電腦)上執行。否則,您將會收到以下錯誤: "iSCSI 啟動器"服務在還原伺服器上未執行. 在這種情況下,連線測試將會失敗。

您可以在"電腦管理"視窗中啟動 Microsoft iSCSI 啟動器服務(Computer Management > Services and Applications > Services).

How to start the iSCSI initiator service in Windows

此外,您也可以在 PowerShell 中啟動該服務:

  1. 檢查 iSCSI 發起者服務的狀態:

Get-Service -Name MSiSCSI

  1. 啟動 iSCSI 服務:

Start-Service msiscsi

  1. 將服務的啟動類型設定為"自動":

Set-Service -Name MSiSCSI -StartupType Automatic

  1. 請檢查 iSCSI 發起者服務是否已啟動:

Get-Service -Name MSiSCSI

How to start the iSCSI initiator service in PowerShell

  1. Objects. 選取您要還原的 AD 物件。您可以透過高度自動化的方式,一次還原多個物件。我們希望還原已刪除的 AD 帳戶。
在左側窗格中,瀏覽備份中可用的 Active Directory 物件樹。選取父物件後,請在右側窗格中選取要還原的物件。在本例中,我們瀏覽 單元1 並選取三位使用者(user1, user2 以及 user3) 其位置位於此組織單位中,以便進行還原。

Select and restore deleted AD users

註: 您可以看到 無法載入還原點 若 iSCSI 服務尚未啟動,系統將顯示此訊息。要在 Linux 機器上啟動 iSCSI 服務(例如,在具備備份儲存庫或 Transporter 的機器上),請執行以下命令:

/etc/init.d/iscsid start

  1. Options. 請在此步驟中選擇 AD 還原選項。所有可能的選項列於下方。
  • Recovery type:
  • 還原至原始位置
  • 匯出
  • Recovery of user object:
  • 該使用者將被停用
  • 使用者必須在下次登入時變更密碼
  • Overwrite behavior:
  • 若該項目已存在,請重新命名已還原的項目
  • 若該項目已存在,則跳過該項目
  • 如果該項目已存在,則覆寫原始項目

在此 AD 還原範例中,我們將項目還原至原始位置並選取相關選項,如下方螢幕截圖所示。

Options to recover deleted AD objects

點擊 Recover,閱讀通知並點擊 Proceed.

Restoring AD objects – a notification about attributes

  1. Finish. Active Directory 物件的還原程序已開始。請等待還原程序完成。

使用此方法完成 Active Directory 物件的還原程序後,我們可以開啟 Active Directory 使用者與電腦 在我們的 Windows Server 2019 上,並檢查已刪除的 AD 組織單位(單元1) 已連同其子物件一併恢復。

如下方截圖所示,所有儲存於 單元1 已成功恢復。這些帳戶的大部分屬性(包括群組成員資格)均已保留。我們只需重設密碼並啟用這些使用者帳戶即可。

AD recovery has finished – checking the data of the recovered users

透過備份進行進階 AD 還原

您可能需要執行進階的 Active Directory 還原作業,並透過高度客製化的設定,從備份中復原已刪除的 Active Directory 物件。例如,您可以將 AD 物件從備份匯出至自訂伺服器,編輯其參數,然後將其匯入至所需的位置。

NAKIVO 的通用資料保護解決方案可協助您執行此類任務。讓我們來看看一個範例。

從備份中匯出 AD 物件

網頁介面中工作流程的前幾個步驟,與本文前一節所述內容相同。讓我們直接進入物件還原精靈的第三個步驟。進階 AD 還原工作流程的差異,正是從這個步驟開始。

  1. Objects. 在此範例中,讓我們選取其他 Active Directory 物件進行還原。我們希望還原已刪除的 AD 使用者。讓我們瀏覽以尋找 使用者 並選擇 user10. 我們可以在 使用者 從備份中還原的目錄。

Active Directory restore deleted users (selecting users to restore)

  1. Options. 我們選擇匯出欲還原的選取 Active Directory 物件。我們希望將物件匯出至還原伺服器的本地資料夾,此步驟中的所有設定如下。
  • Recovery type: 匯出
  • Export location:還原伺服器上的本地資料夾
  • Local path: C:TempAD-還原
  • Overwrite behavior: 若該項目已存在,則重新命名已還原的項目

點擊 Recover 以及 Proceed 繼續。

AD recovery options for export and confirmation to proceed

請等待還原工作完成,並將選定的 Active Directory 物件匯出至目標位置。

匯出程序完成後,我們便可在 C:TempAD-還原 資料夾。每個 AD 物件都會匯出為一個獨立的 LDIF 檔案。

Selected AD objects are exported to LDIF files for recovery

LDIF 檔案是一種可編輯的文字檔案,其中包含有關已匯出 Active Directory 物件的資訊。讓我們試著還原已刪除的 AD 使用者,該使用者是 user10 就我們的情況而言。您可以在下方的螢幕截圖中看到 LDIF 檔案內容的範例。

The contents of the LDIF file

Ldifde 是 Windows Server 的原生工具,可用於將 Active Directory 物件匯出至/從 .LDIF 檔案。不過,您必須滿足某些需求才能使用此工具,例如安裝"憑證授權單位 (CA)"伺服器角色。

為還原 AD 物件做好 Windows Server 的準備

開始之前,請確認 Active Directory 伺服器已具備 CA 角色。此角色對於建立安全的 LDAP 連線至關重要。您可以在 Server Manager 透過使用 Add roles and features 精靈。新增此角色的工作流程屬標準流程,我們將僅聚焦於新增此角色的主要步驟。

選取 Active Directory Certificate Services 位於 Server Roles 步驟 新增角色與特點 精靈。

Installing AD Certificate Services restore deleted AD objects and import them with ldifde

選擇 Certification AuthorityRole Services step.

Installing Certification Authority to recover deleted AD objects

完成精靈的所有步驟後,您需要對已安裝的角色執行部署後設定。

Active Directory Certificate Services post-deployment configuration

請依照 AD CS 設定精靈的標準步驟操作:

  1. 憑證。請輸入網域管理員的憑證(本例中為 domain1administrator)
  2. 角色服務。請確認已選取"憑證授權單位"。
  3. 設定類型。請選擇"Enterprise憑證授權單位"。
  4. CA 類型。請選擇根憑證授權機構。
  5. 私密金鑰。請選擇"建立新的私密金鑰"。
  6. 加密。您可以使用預設設定。
  7. CA 名稱。請確保該 CA 名稱與您的網域相符。
  8. 有效期。請設定有效期,例如 5 年。
  9. 憑證資料庫。使用預設設定。

Active Directory Certificate Services are installed to recover deleted AD objects with ldifde

完成 AD CS 設定精靈後,請重新啟動 Windows 伺服器以使變更生效。

完成 AD 還原

現在,我們可以利用 Windows PowerShell 中的命令列工具 Ldifde,透過匯入已刪除的物件來還原 Active Directory 中的這些物件。如您所知,我們先前已從備份中匯出這些物件。

  1. 以系統管理員身分開啟 PowerShell。
  2. 前往已還原項目 LDIF 檔案的位置:

cd C:TempAD-Recovery

  1. 將 AD 物件從 LDIF 檔案匯入以進行還原的指令如下:

ldifde -i -t 636 -f filename.ldif -k -j logfolder

在哪裡 filename.ldif 是 LDIF 檔案的路徑,以及 日誌資料夾 是儲存程序日誌的資料夾路徑。該 -t 636 此選項指的是用於與 AD 伺服器建立安全連線的 TCP 636 埠。在我們的情況下,透過匯入已刪除的 AD 物件來還原它們的指令如下:

ldifde -i -t 636 -f NakivoExport-domain1.local.Users.user10.ldif -k -j C:TempAD-RecoveryLog

我們正在修復 user10. 若匯入成功,PowerShell 主控台的輸出範例如下圖所示。

Restoring AD objects by using ldifde import in PowerShell

註: 如果您使用 ldifde 若要手動匯出 Active Directory 物件,請使用篩選器。管理員無法匯入所有 AD 物件的屬性。部分屬性受到保護,且僅系統擁有匯入這些屬性的權限。在此情況下,您可能會看到類似以下的錯誤訊息: 此屬性由安全性帳戶管理員 (SAM) 擁有), 問題 5003 (WILL_NOT_PERFORM) 以及其他情況,例如嘗試從 LDIF 檔案匯入物件時。

若您匯出包含所有屬性的物件(例如使用者或群組),可能需要手動移除某些屬性,例如 objectGUID, objectSid, sAMAccountType,以及 .LDIF 檔案中的其他項目,請在匯入前刪除相應的行。否則,您將無法使用該 ldifde 工具。

使用該工具的匯出/匯入功能性時,請注意以下幾點: ldifde 這是一款無需專用備份解決方案即可進行備份與還原的工具。建議使用專用的備份解決方案來保護整個 Active Directory 伺服器或虛擬機器,以便能夠快速且輕鬆地執行完整還原及 AD 物件的細粒度還原。

結論

保護資料與應用程式(包括 Active Directory 及其所有內容)的可靠方法,在於定期執行適當的資料備份,並依照合理的保留政策儲存備份。在此情況下,專業的備份解決方案將能提供協助。 NAKIVO Backup & Replication 這是一款通用的資料保護解決方案,具備應用程式感知能力,並支援檔案與物件的完整還原及細粒度還原,包括 Active Directory 中的資料。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面體驗本解決方案的所有資料保護特點。15 天免費試用。無功能或容量限制。無需提供信用卡資訊。

People also read