“Yanlışlıkla 5 Kullanıcıyı Sildim”
BT uzmanı Melis cleanup yaparken bir OU’dan 5 kullanıcıyı yanlışlıkla sildi. Bunlar aktif çalışanlardı — yarın sabah erişim olmayacak.
“Backup’tan restore saatler sürer. AD Recycle Bin aktif mi?”
Test:
Get-ADOptionalFeature -Filter "Name -eq 'Recycle Bin Feature'" |
Select Name, EnabledScopes
Çıktı:
Name EnabledScopes
---- -------------
Recycle Bin Feature {}
EnabledScopes boş → Recycle Bin aktif değil. Silinen kullanıcılar recovery imkansız, backup’tan restore gerek.
Dersler öğrenildi. Bu yazı hem Recycle Bin aktif etme hem silinmiş obje restore adımlarını anlatıyor.
Hızlı Çözüm (TL;DR)
Recycle Bin Aktif (bir kez, geri alınamaz)
Enable-ADOptionalFeature "Recycle Bin Feature" `
-Scope ForestOrConfigurationSet `
-Target "corp.firma.com.tr"
Silinmiş User Restore
Get-ADObject -Filter {isDeleted -eq $true -and Name -like "*mehmet*"} `
-IncludeDeletedObjects -Properties * |
Restore-ADObject
AD Recycle Bin Nedir?
Windows Server 2008 R2+ feature. AD objeleri silindiğinde:
Aktif DEĞİLSE:
- Obje “tombstone”a döner
- Tüm attribute’lar temizlenir (name, displayName, memberOf)
- Sadece sID + GUID kalır
- Restore ederken attribute’lar geri gelmez (manuel doldurman gerek)
Aktif İSE:
- Obje silinince “Deleted Objects” container’ına gider
- Tüm attribute’lar korunur (memberOf, description, vs.)
- Tombstone Lifetime (180 gün default) içinde tek komutla tam restore mümkün
- Full fidelity — hiçbir manuel çalışma yok
Aktif Etme — Önemli Notlar
1. Forest Functional Level
Minimum Windows Server 2008 R2:
Get-ADForest | Select ForestMode
Windows2008R2Forest veya üstü olmalı. Değilse:
Set-ADForestMode -ForestMode Windows2008R2Forest -Identity "corp.firma.com.tr"
2. Geri Dönüşü Yok
Recycle Bin bir kez aktif edilince kapatılamaz. Bu yüzden yaygınlık:
- Test ortamında önce dene
- Sonra production’da kalıcı aktif et
3. Storage Impact
Silinmiş objeler 180 gün (tombstone lifetime) tutulur. AD DB boyutu ~5-10% artabilir.
10:00 — Aktif Etme
GUI: Active Directory Administrative Center (ADAC)
dsac
📸 Ekran 1 — ADAC sol panel
Sol panel: “corp (local)” domain
Üst menü: Tasks panel
”Enable Recycle Bin…” linki görünür (henüz aktif değilse)
Tıkla → onay dialog:
📸 Ekran 2 — Confirm dialog
”Are you sure you want to enable the Recycle Bin? After enabling, it cannot be disabled.”
OK
Aktif edildi.
PowerShell
# Aktif et
Enable-ADOptionalFeature "Recycle Bin Feature" `
-Scope ForestOrConfigurationSet `
-Target "corp.firma.com.tr"
# Doğrula
Get-ADOptionalFeature -Filter "Name -eq 'Recycle Bin Feature'" |
Select Name, EnabledScopes
Çıktı şimdi:
Name EnabledScopes
---- -------------
Recycle Bin Feature {CN=Partitions,CN=Configuration,DC=corp,...}
Aktif. Replication ile tüm DC’lere yayılır (15 dk-2 saat).
Silinmiş Obje Restore
GUI Yöntemi — ADAC
📸 Ekran 3 — ADAC Deleted Objects container
Sol panelde “corp (local)” > Deleted Objects
(Recycle Bin aktif olunca görünür)
Sağ panelde silinmiş objeler listesi:
- Mehmet Yılmaz (user) — silinme tarihi
- Can Kara (user) — silinme tarihi
- Sales-2022 (group) — silinme tarihi
Her satırda: Name, Type, When Deleted, Last Known Parent
User sağ tık:
📸 Ekran 4 — Restore options
Menu:
- Restore (orijinal OU’ya geri yükle)
- Restore To… (farklı OU’ya)
- Properties
- Delete (permanent silme)
Restore tıkla → 3 saniye → Kullanıcı geri geldi:
- Tüm attribute’ları (isim, e-mail, phone)
- Tüm grup üyelikleri
- Orijinal DN’i
- Aynı SID (önemli — permissions korunur)
PowerShell Yöntemi
Silinmiş Obje Listele
Get-ADObject -Filter {isDeleted -eq $true -and Name -ne "Deleted Objects"} `
-IncludeDeletedObjects -Properties whenChanged, lastKnownParent |
Select Name, ObjectClass, whenChanged, lastKnownParent |
Format-Table
Çıktı:
Name ObjectClass whenChanged lastKnownParent
---- ----------- ----------- ---------------
Mehmet Yılmaz\0ADEL:xxxxx-xxxx-xxxx-xxxx-xxxxxxxx user 5/12/2024 9:45 OU=Users,DC=corp,...
Can Kara\0ADEL:yyyyy-yyyy-yyyy-yyyy-yyyyyyyy user 5/12/2024 9:46 OU=Users,DC=corp,...
Sales-2022\0ADEL:zzzzz-zzzz-zzzz-zzzz-zzzzzzzz group 5/12/2024 9:47 OU=Groups,DC=corp,...
Tek Obje Restore
Get-ADObject -Filter {Name -like "Mehmet*"} -IncludeDeletedObjects |
Restore-ADObject
Toplu Restore (bir OU’dan silinmişleri)
$parentOU = "OU=Users,DC=corp,DC=firma,DC=com,DC=tr"
Get-ADObject -Filter {isDeleted -eq $true -and lastKnownParent -eq $parentOU} `
-IncludeDeletedObjects | Restore-ADObject
Belirli Tarih Aralığındaki Silinmişler
Bugün (5/12/2024) silinenler:
$today = (Get-Date).Date
Get-ADObject -Filter {isDeleted -eq $true} -IncludeDeletedObjects -Properties whenChanged |
Where {$_.whenChanged -ge $today} |
Select Name, ObjectClass, whenChanged
10:05 — Melis Restore Yapıyor
# Bugün silinen user'ları listele
Get-ADObject -Filter {isDeleted -eq $true -and ObjectClass -eq 'user'} `
-IncludeDeletedObjects -Properties whenChanged |
Where {$_.whenChanged -ge (Get-Date).Date} |
Select Name, whenChanged
Çıktı:
Name whenChanged
---- -----------
Mehmet Yılmaz\0ADEL:xxxxx-xxxx-xxxx-xxxx-xxxxxxxx 5/12/2024 10:01
Can Kara\0ADEL:yyyyy-yyyy-yyyy-yyyy-yyyyyyyy 5/12/2024 10:01
Elif Demir\0ADEL:aaaaa-aaaa-aaaa-aaaa-aaaaaaaa 5/12/2024 10:01
Ahmet Çelik\0ADEL:bbbbb-bbbb-bbbb-bbbb-bbbbbbbb 5/12/2024 10:01
Ayşe Yılmaz\0ADEL:ccccc-cccc-cccc-cccc-cccccccc 5/12/2024 10:01
Tüm 5 kullanıcı. Restore:
Get-ADObject -Filter {isDeleted -eq $true -and ObjectClass -eq 'user'} `
-IncludeDeletedObjects -Properties whenChanged |
Where {$_.whenChanged -ge (Get-Date).Date} |
Restore-ADObject
Tüm 5’i saniyeler içinde geri geldi. Doğrulama:
Get-ADUser mehmet.yilmaz -Properties memberOf | Select Name, Enabled, memberOf
Enabled, tüm gruplar korundu.
Ama… Recycle Bin Aktif Değildiyse
Recycle Bin yokken silinen objeler için backup’tan authoritative restore gerek:
1. System State Backup Al (bunu yapma kültürü)
wbadmin start systemstatebackup -backuptarget:E:
2. Restore Prosedürü
Directory Services Restore Mode’a gir (DSRM):
- DC’yi reboot
- F8 > Directory Services Restore Mode
- DSRM şifresi ile login
Sonra:
wbadmin get versions -backuptarget:E:
wbadmin start systemstaterecovery -version:05/11/2024-23:00 -backuptarget:E: -authsysvol
ntdsutil
authoritative restore
restore subtree "OU=Users,DC=corp,DC=firma,DC=com,DC=tr"
quit
quit
Reboot normal mode. Restore edildi ama Recycle Bin olmadan attribute karmaşıklığı olabilir.
Bu yüzden: Recycle Bin aktif olması hayati.
Yaygın Hatalar
”The attribute is not found in the cache” Restore Error
Restore-ADObject sırasında bu hata → hedef OU silinmiş. İki seçenek:
- Önce parent OU’yu restore et:
Get-ADObject -Filter {isDeleted -eq $true -and ObjectClass -eq 'organizationalUnit'} `
-IncludeDeletedObjects | Restore-ADObject
- Farklı OU’ya restore:
Get-ADObject -Filter {...} -IncludeDeletedObjects |
Restore-ADObject -TargetPath "OU=Recovered,DC=corp,DC=firma,DC=com,DC=tr"
Recycle Bin Aktif Ama Silinmiş Obje Görünmüyor
- 180 gün geçmiş olabilir (tombstone lifetime aşıldı — permanent delete)
- Replication gecikmesi —
repadmin /syncall /AdeP
Group Memberships Eski
Restore sonrası memberOf görünüyor ama gerçek grup üye olmamış. Bi-directional relationship re-establish gerekli:
# User'ın olması gereken gruplarını manuel ekle
Add-ADGroupMember -Identity "Sales-Team" -Members "mehmet.yilmaz"
Recycle Bin çoğu durumda bunu otomatik halleder ama edge case’ler olabilir.
Önleyici Strateji
1. “Protect from Accidental Deletion”
Her OU için:
Get-ADOrganizationalUnit -Filter * |
Set-ADObject -ProtectedFromAccidentalDeletion $true
Tüm OU’lar “silme koruması”. Silmeye çalışırsan wizard uyarı verir.
User bazında:
Get-ADUser -Filter {SamAccountName -eq "ceo.firma"} |
Set-ADObject -ProtectedFromAccidentalDeletion $true
2. Audit — Kim Ne Zaman Sildi?
# Event 4726 — User account deleted
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4726} -MaxEvents 100
Log’da kim hangi kullanıcıyı silmiş → audit trail.
3. Delegation — Helpdesk Sadece Password Reset
Delegation rehberi → sadece yetkili kişiler silme yapar.
İlgili Rehberler
AD disaster recovery, backup stratejisi ve güvenli silme prosedürü için uzman destek? Kozyatağı Bilişim AD management paketimiz. Teknik görüşme.