barisnetblog.space — AD Recycle Bin ile Silinen Nesneleri Geri Getirmek
Windows Server 21 Ekim 2026 5 dk okuma 3 görüntülenme

AD Recycle Bin ile Silinen Nesneleri Geri Getirmek

Yanlışlıkla silinen bir kullanıcıyı veya tüm OU'yu grup üyelikleriyle birlikte dakikalar içinde geri getiriyoruz. AD Recycle Bin'i açma, PowerShell ve ADAC ile geri yükleme adımları bu rehberde.

Önceki yazıda Delegation of Control ile yardım masasına OU bazında yetki devretmiştik. Yetki dağıldıkça bir gün şu telefon mutlaka gelir: "Yanlışlıkla bir kullanıcıyı sildim" ya da daha kötüsü "Muhasebe OU'sunu sildim". AD Recycle Bin açık değilse silinen nesneyi geri getirmek için DC'yi yedekten geri yüklemeniz gerekir. Açıksa, nesneyi tüm özellikleri ve grup üyelikleriyle birlikte tek bir komutla geri getirebilirsiniz. Bu yazıda Recycle Bin'i açacak, silinen nesneleri bulacak ve geri yükleyeceğiz.

Silinen Bir Nesneye Ne Olur?

Active Directory'de bir nesneyi sildiğinizde nesne hemen yok olmaz:

  • Recycle Bin kapalıyken: Nesne tombstone haline gelir. Grup üyelikleri ve çoğu özelliği hemen silinir, yalnızca SID ve GUID gibi birkaç özellik kalır. Geri getirilse bile eksik bir nesne elde edersiniz.
  • Recycle Bin açıkken: Nesne önce deleted object durumuna geçer ve tüm özelliklerini korur. Deleted object lifetime süresi boyunca eksiksiz olarak geri getirilebilir. Bu süre dolunca nesne recycled duruma geçer ve artık Recycle Bin ile kurtarılamaz.

Her iki süre de varsayılan olarak 180 gündür. Mevcut değerleri görmek için:

PowerShell
Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=firma,DC=local" `
    -Properties tombstoneLifetime, "msDS-DeletedObjectLifetime"

msDS-DeletedObjectLifetime boş görünüyorsa, değer tombstoneLifetime ile aynıdır.

Ön Koşullar

  • Forest işlevsel seviyesi: En az Windows Server 2008 R2 olmalıdır.
  • Yetki: Etkinleştirme için Enterprise Admins üyeliği gerekir.
  • Geri dönüşsüzlük: Recycle Bin bir kez açıldıktan sonra kapatılamaz. Bu bir sorun değildir, ancak bilmeniz gerekir.

Forest seviyesini kontrol edin:

PowerShell
Get-ADForest | Select-Object Name, ForestMode

Recycle Bin'i Etkinleştirmek

DC01 üzerinde, tercihen Schema Master ve Domain Naming Master rollerinin bulunduğu DC'de şu komutu çalıştırın:

PowerShell
Enable-ADOptionalFeature -Identity "Recycle Bin Feature" -Scope ForestOrConfigurationSet `
    -Target "firma.local" -Confirm:$false

Etkinleştirildiğini doğrulayın:

PowerShell
Get-ADOptionalFeature -Filter 'Name -like "Recycle Bin*"' | Select-Object Name, EnabledScopes

EnabledScopes alanı doluysa özellik açıktır. Değişikliğin tüm DC'lere ulaşması için replikasyonun tamamlanmasını bekleyin veya repadmin /syncall /AdeP ile tetikleyin.

Aynı işlemi grafik arayüzden yapmak isterseniz Active Directory Administrative Center (dsac.exe) açın, sol panelde domain'e sağ tıklayıp Enable Recycle Bin seçin.

Önemli bir not: Recycle Bin'i açmadan önce silinmiş nesneler bu özellikten yararlanamaz. Bu yüzden yeni kurduğunuz her forest'ta ilk iş olarak açmanızı öneririm.

Silinen Bir Kullanıcıyı Geri Getirmek

Senaryo: ahmet kullanıcısı yanlışlıkla silindi. Önce silinen nesneler arasında arayalım:

PowerShell
Get-ADObject -Filter 'isDeleted -eq $true -and Name -like "*ahmet*"' -IncludeDeletedObjects `
    -Properties samAccountName, lastKnownParent, whenChanged |
    Select-Object Name, samAccountName, lastKnownParent, whenChanged

Silinen nesnelerin DN'i CN=ahmet\0ADEL:<GUID>,CN=Deleted Objects,... biçimindedir; Name sütununda ad ile DEL:<GUID> iki satır halinde görünür. lastKnownParent, nesnenin silinmeden önce bulunduğu OU'yu gösterir. Nesneyi bulduktan sonra geri yükleyin:

PowerShell
Get-ADObject -Filter 'samAccountName -eq "ahmet" -and isDeleted -eq $true' -IncludeDeletedObjects | Restore-ADObject

Kullanıcı eski OU'suna, parolası, grup üyelikleri ve tüm özellikleriyle geri döner. Kontrol edelim:

PowerShell
Get-ADUser -Identity "ahmet" -Properties MemberOf, Enabled | Select-Object Name, Enabled, MemberOf

Nesneyi farklı bir OU'ya veya farklı bir isimle geri yüklemek isterseniz -TargetPath ve -NewName parametrelerini kullanabilirsiniz:

PowerShell
Get-ADObject -Filter 'samAccountName -eq "ahmet" -and isDeleted -eq $true' -IncludeDeletedObjects |
    Restore-ADObject -TargetPath "OU=Kullanicilar,OU=Firma,DC=firma,DC=local"

Silinen Bir OU'yu İçeriğiyle Geri Getirmek

Bir OU silindiğinde içindeki tüm nesneler de silinir. Geri yüklemede sıra çok önemlidir: önce üst nesne, sonra alt nesneler. Alt nesneyi üst nesneden önce geri yüklemeye çalışırsanız, üst nesnenin hâlâ silinmiş olduğunu belirten bir hata alırsınız.

Senaryo: OU=Muhasebe,OU=Kullanicilar,OU=Firma,DC=firma,DC=local içeriğiyle birlikte silindi. Önce OU'nun kendisini geri yükleyin:

PowerShell
Get-ADObject -LDAPFilter "(&(objectClass=organizationalUnit)(msDS-LastKnownRDN=Muhasebe))" -IncludeDeletedObjects | Restore-ADObject

Ardından son bilinen üst nesnesi bu OU olan tüm nesneleri geri yükleyin:

PowerShell
Get-ADObject -SearchBase "CN=Deleted Objects,DC=firma,DC=local" `
    -Filter 'lastKnownParent -eq "OU=Muhasebe,OU=Kullanicilar,OU=Firma,DC=firma,DC=local"' `
    -IncludeDeletedObjects | Restore-ADObject

OU'nun içinde alt OU'lar varsa, her alt OU için aynı işlemi yukarıdan aşağıya tekrarlayın. ADAC'de de sıra aynıdır ve alt ağaç tek adımda geri yüklenemez: Deleted Objects içinde önce üst OU'yu seçip Restore deyin, ardından konsolu yenileyin (F5). Alt nesnelerin Last Known Parent değeri geri yüklenen OU'yu gösterdiğinde bu nesneleri Ctrl+A ile seçip Restore deyin. Alt OU'lar varsa her seviye için bunu tekrarlayın. Restore To ise nesneyi farklı bir OU'ya geri yüklemek içindir.

Yanlışlıkla Silmeyi Önlemek

Geri getirmek güzel ama hiç silinmemesi daha iyidir. OU'lar için Protect object from accidental deletion ayarı yeni oluşturulan OU'larda varsayılan olarak açıktır, ancak kullanıcılar ve gruplar için kapalıdır. Mevcut tüm OU'larda ayarın açık olduğundan emin olun:

PowerShell
Get-ADOrganizationalUnit -Filter * | Set-ADObject -ProtectedFromAccidentalDeletion $true

Kritik grupları ve servis hesaplarını da koruyabilirsiniz:

PowerShell
Get-ADGroup -SearchBase "OU=Gruplar,OU=Firma,DC=firma,DC=local" -Filter * |
    Set-ADObject -ProtectedFromAccidentalDeletion $true

Korunan bir nesneyi silmek için önce bu ayarı kapatmanız gerekir. Bu küçük adım, hatalı bir toplu silme komutunu durdurmaya yeter.

Toplu Silmeden Sonra Zaman Aralığına Göre Geri Yüklemek

Hatalı bir betik veya yanlış filtreyle çalıştırılmış bir Remove-ADUser komutu onlarca nesneyi aynı anda silebilir. Bu durumda nesneleri tek tek aramak yerine silinme zamanına göre filtreleyebilirsiniz. Önce son bir saatte silinen nesneleri listeleyip kontrol edin:

PowerShell
$baslangic = (Get-Date).AddHours(-1)
Get-ADObject -Filter 'isDeleted -eq $true -and whenChanged -ge $baslangic' -IncludeDeletedObjects `
    -Properties lastKnownParent, whenChanged | Select-Object Name, ObjectClass, lastKnownParent, whenChanged

Liste beklediğiniz nesneleri içeriyorsa aynı filtreyi Restore-ADObject komutuna yönlendirin. Silinen nesneler arasında OU'lar da varsa, önce OU'ları, sonra diğer nesneleri geri yüklemeyi unutmayın. Geri yükleme komutunu çalıştırmadan önce listeyi bir CSV dosyasına kaydetmek, hangi nesnelerin geri getirildiğini belgelemenizi sağlar.

Sık Karşılaşılan Hatalar

  • Recycle Bin açılmadan önce silinen nesneler: Bu nesneler tombstone'dur ve grup üyelikleri kaybolmuştur. Eksiksiz geri getirmek için System State yedeğinden authoritative restore gerekir.
  • Alt nesneyi üst OU'dan önce geri yüklemek: İşlem başarısız olur. Her zaman yukarıdan aşağıya geri yükleyin.
  • Aynı isimde yeni nesne oluşturulmuş olması: Aynı OU'da aynı adla yeni bir nesne varsa -NewName veya -TargetPath ile farklı bir ad ya da konuma geri yükleyin. Yeni kullanıcı aynı samAccountName'i kullanıyorsa -NewName işe yaramaz; önce yeni hesabın samAccountName'ini değiştirin veya hesabı silin.
  • GPO'ların Recycle Bin'den beklenmesi: GPO'ların asıl ayarları SYSVOL'de tutulur ve Recycle Bin kapsamına girmez. GPO'lar için Backup-GPO ile düzenli yedek alın.
  • Replikasyonu beklememek: Geri yükleme farklı bir DC'de yapıldıysa nesne diğer DC'lerde birkaç saniye ile site link aralığı kadar geç görünebilir.

Bir sonraki yazıda System State yedeği almayı ve DC'yi authoritative restore ile geri yüklemeyi göreceğiz.

Okuma görünümü 3 görüntülenme