При удалении любого объекта в Active Directory (пользователя, группы, компьютера или OU), он не удаляется немедленно. В течении 180 дней удаленные объекты AD можно восстановить с помощью графических инструментов или консольных утилит/PowerShell.
Когда объект удаляется из каталога Active Directory, он физически не удаляются из базы, о помечается логически удаленным (атрибут isDeleted = true). В течении 180 дней (значение по-умолчанию, которое задается в атрибуте домена msDS-deletedObjectLifetime), удаленный объект можно восстановить.
Прежде чем приступать к случайно удаленного объекта, нужно проверить, включена ли в домене корзина Active Directory Recycle Bin или нет. От этого будут зависеть ваши дальнейшие действия.
Корзина AD (Active Directory Recycle Bin) в Windows Server
Начиная с функционального уровня домена Windows Server 2008 R2, в Active Directory можно включить корзину (Active Directory Recycle Bin). Такая корзина для удаленных объектов существенно упрощает восстановление объектов в AD, без потери атрибутов и членства в группах.
Проверить, включена ли корзина в вашем лесу AD можно с помощью PowerShell (по умолчанию AD Recycle Bin отключена и включается только вручную Enterprise администратором)
Проверяем, что уровень леса AD не ниже Windows2008R2Forest:
Get-ADForest |Select-Object forestmode
Проверить, включена ли AD Recycle Bin в лесу:
Get-ADOptionalFeature "Recycle Bin Feature" | select-object name,EnabledScopes
Если значение EnabledScopes не пустое, значит в вашем домене корзина Active Directory уже включена. В этом случае переходите к разделу статьи, описывающему восстановление удаленных объектов из корзины AD.
Если корзина отключена, тогда нужно перейди к инструкциям в разделе Восстановление удаленного пользователя, без AD Recycle Bin.
Поэтому включать корзину можно только после того, как вы убедились, что среди удаленных объектов AD отсутствуют объекты, которые вы, возможно, захотите восстановить.
Включить Active Directory Recycle Bin можно с помощью команды Enable-ADOptionalFeature:
Enable-ADOptionalFeature "Recycle Bin Feature" -Scope ForestOrConfigurationSet -Target "winitpro.ru"
Или, еще проще, из графической консоли Active Directory Administrative Center (
dsac.exe
). Запустите консоль ADAC, подключитесь к корневому домену, щелкните по имени домена и выберите Enable Recycle Bin.
Восстановление удаленного пользователя из корзины Active Directory
Рассмотрим на простом примере, как восстановить удаленный объект из корзины Active Directory. Например, попробуем удалить учетную запись пользователя, а затем восстановить его из корзины AD.
После того, как корзина AD включена, все удаляемые объекты перемещаются в специальный скрытый контейнер Deleted Objects (не отображается в обычной mmc оснастке ADUC). Найдите этот контейнер в консоли Active Directory Administrative Center (
dsac.exe
).
Здесь отображаются все удаленные объекты, включая пользователей, компьютеры, контакты, группы и OU. Здесь указаны также дата удаления и исходный OU (last know parent).
Чтобы восстановить объект, щелкните по нему и выберите Restore (для восстановления в исходный OU), либо Restore to (восстановление в произвольный раздел AD).
При восстановлении удаленного пользователя из корзины, у объекта восстанавливаются значение большинства его атрибутов и членство в группах AD.
Для поиска удаленных объектов и их восстановления можно использовать PowerShell. Сначала удалим пользователя, а потом попробуем восстановить его из командной строки.
С помощью командлета Get-ADUser выведем значения атрибута пользователя IsDeleted (он пустой).
get-aduser a.novak -Properties *| Select-Object IsDeleted
Теперь удалим учетную запись пользователя:
Remove-ADUser a.novak
Чтобы найти удаленную учетную запись пользователя в корзине AD, воспользуйтесь командлетом Get-ADObject с параметром IncludeDeletedObjects:
Get-ADObject -Filter 'Name -like "*novak*"' –IncludeDeletedObjects
Удаленный пользователь нашелся в контейнере Deleted Objects.
Выведем значение атрибута IsDeleted, название исходного OU, в котором находился пользователь перед удалением (LastKnownParent), а также список групп, в которых он состоял:
Get-ADObject -Filter 'Name -like "*novak*"' –IncludeDeletedObjects -Properties *| select-object Name, sAMAccountName, LastKnownParent, memberOf, IsDeleted|fl
Get-ADObject –filter {Deleted -eq $True -and ObjectClass -eq "user"} –includeDeletedObjects
Чтобы восстановить учетную запись пользователя, скопируйте значение атрибута ObjectGUID и выполните команду:
Restore-ADObject -Identity ‘3dc33c7c-b912-4a19-b1b7-415c1395a34e’
Либо можно восстановить пользователя по его SAMAccountName:
Get-ADObject -Filter 'SAMAccountName -eq "a.novak"' –IncludeDeletedObjects | Restore-ADObject
Откройте консоль ADUC (dsa.msc) и проверьте, что учетная запись пользователя была восстановлена в тот же самый OU, где она находилась до удаления. После восстановления учетная запись пользователя будет отключена. Включите ее и сбросьте пароль, перед тем как отдавать ее пользователю.
Восстановить удаленную группу AD:
Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*Allow*' } –IncludeDeletedObjects| Restore-ADObject –verbose
Восстановить учетную запись компьютера:
Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'computer' -and Name -like '*spb-fs02*' } –IncludeDeletedObjects| Restore-ADObject –verbose
Рассмотрим другой сценарий. Допустим, на каком-то OU была отключена опция Protect object from accidental deletion и вы случайно удалили OU вместе со всеми вложенными пользователями, компьютерами и группами.
Корзина AD не позволяет автоматически восстановить объект вместе с иерархией. Удаленную OU можно восстановить вместе со всеми вложенными объектами с помощью PowerShell скрипта:
- Сначала нужно восстановить корневой OU:
Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'organizationalunit' -and Name -like '*SPB*' } –IncludeDeletedObjects| Restore-ADObject
- Затем все вложенные OU:
Get-ADObject -Filter { Deleted -eq $True -and ObjectClass -eq 'organizationalunit' -and LastKnownParent -eq 'OU=SPB,DC=winitpro,DC=ru' } –IncludeDeletedObjects| Restore-ADObject
- Теперь можно восстановить все удаленные объекты в этих OU по параметру LastKnownParent (пользователей, компьютеры, группы, контакты):
Get-ADObject -Filter { Deleted -eq $True} –IncludeDeletedObjects -Properties *| Where-Object LastKnownParent -like '*OU=SPB,DC=winitpro,DC=ru'| Restore-ADObject
Как восстановить удаленного пользователя если корзина AD отключена?
Если корзина Active Directory в вашем лесу отключена, можно восстановить удаленные объекты с помощью утилиты ldp.exe (используется несложная, но громоздкая процедура) или с помощью официальной утилиты adrestore.exe от Microsoft (самый простой и быстрый вариант).
- Скачайте архив с утилитой AdRestore (https://learn.microsoft.com/en-us/sysinternals/downloads/adrestore) и распакуйте на контроллере домена
- Откройте командную строку с правами администратора и выведите список удаленных объектов в домене:
.\adrestore64.exe
- Чтобы вывести информацию о конкретном удалённом пользователе, укажите его имя:
.\adrestore64.exe "Anton Grey"
- Чтобы восстановить объект, скопируйте его GUID и выполните команду:
.\adrestore64.exe -r GUID
- Подтвердите восстановление объекта:
y
- Проверьте, что пользователь был восстановлен в исходную OU:
Get-ADUser -Filter {cn -eq "Anton Grey"}
- Учетная запись пользователя после восстановления отключена и пароль не задан. Нужно сбросить пароль пользователя и включить учетку:
Set-ADAccountPassword a.grey -Reset
Get-ADUser a.grey| Enable-ADAccount
При таком способе восстановления (в отличии от способа с AD Recycle Bin), значения большинства атрибутов пользователя (включая группы, в которых он состоял) будут потеряны. Останутся только базовые атрибуты, такие как GUID, SID, CN и т.д.
ntdsutil
.Наличие корзины существенно упрощает восстановление случайно удаленных учетных записей в AD. Однако AD Recycle Bin не заменяет полноценное резервное копирование базы AD.
Добрый день.
Сегодня впервые воспользовался корзиной AD и был удивлен тем, что помимо удаленных OU, пользователей, компьютеров и групповых политик там есть неимоверное количество записей типа «hostname-printername». Вы с такой фигней не сталкивались!? Что может служить причиной таким записям?
Добрый день!
Не обращал внимание, но мне кажется, что это удаленные записи принтеров, опубликованных в AD.
Вот еще вариант с GUI через powershell
_https://jm2k69.github.io/2020-04-07-GPO-from-zero-to-hero-How-to-backup-GPO/
По ссылк статья про бэкап GPO
Хорошая статья, спасибо. Но не могу согласиться с первой ее частью. В первых трех абзацах вы пишете, что объект можно восстановить со всеми атрибутами в течение первых 180 дней и якобы это поведение по умолчанию. Но ведь это не так. Такое поведение начинается только после включения корзины. А вот она по умолчанию выключена.
Думаю, стоит обратить читателя на этот нюанс. До включения корзины объект тоже можно восстановить в первые 180 дней (не говорим про win2003 и старее) через тот же LDP. Но к примеру такие атрибуты как членство в группе или описание будут утрачены.
Да, некорркетно описал.
Поправил, благодарю за критику )
Включение корзины полностью очистило Deleted Objects, т.е. частичное восстановление с LDP уже невозможно (
я тоже в корзине не увидел удалённых пользоватлей.
если включение корзины реально удаляет удалённых до этого пользователей, то это фееричная статья
Доброго времени суток ВСЕМ!
1. В сети компании есть три контроллера домена: DC1, DC2 и DC3, которые разнесены на три разных площадки — по одному на каждую.
2. Все три контроллера являются виртуальными машинами на «ESXi 6.7» и бекаплятся с помощью «Veeam».
3. Функциональный уровень леса «Windows Server 2012 R2». Корзина Active Directory отключена.
4. При разворачивании и тестировании нового почтового сервера «Exchange 2019» вместе с почтовым ящиком пользователя была «случайно удалена» и учетная запись из Active Directory (очень важная)!
5. Подскажите, пожалуйста, как ее правильно восстановить из бекапа «Veeam», чтобы другие ДВА контроллера приняли ее и реплицировали к себе?!
Как я понял, есть бэкап контроллера домена?
Нужно выполнить авторитативное восстановление (Authoritative Restore) DC и восстановить с него один объект (не всю базу). Частично это описал здесь https://winitpro.ru/index.php/2019/10/31/vosstanovlenie-active-directory-backup/ (смотрите последнюю секцию, там вкратце про это написано). Как начальная точка поисков пойдет.
Но такое восстановление вещь опасная, если вы не знаете конкретно что делаете, можете положить весь домен.
Get-ADOptionalFeature “Recycle Bin Feature” | select-object name,EnabledScope исправьте на EnabledScopes
+
Примет авторитативного восстанвления объекта из systemstatebackup
_https://wintelteams.wordpress.com/2022/06/18/demo-for-authoritative-restore/
«Если вы не помните имя пользователя, которого удалили, можно вывести полный список объектов, доступных в корзине Active Directory: Get-ADObject –filter {Deleted -eq $True -and ObjectClass -eq «user»} –includeDeletedObjects»
Так искать не получится. ObjectClass это не строка, с которой можно сделать сравнение, это массив. Например, объект типа Computer содержит классы: «computer», «organizationalPerson», «person», «top», «user»; а объект типа User содержит классы: «organizationalPerson», «person», «top», «user».
Поэтому -Filter ‘ObjectClass -eq «user»‘ вернёт не только пользователей, но ещё и компьютеры, и MSA и т.д.
О чем статья? в AD есть папка Deleted в графическом интерфейсе, заходите внутрь наживаете восстановить. Не понял зачем это статья и даже читать не стал, полная ерунда
Перед «DC=winitpro,DC=ru» пропустили запятую.
У sysinternals есть утилита adrestore.exe , которой можно восстановить удаленный объект, если не включена корзина AD. Это намного проще чем восстанавивать его через LDP.EXE