Active Directory Disable Kullanıcıları Otomatik Sildirmek
Active Directory ortamında disable ettiğiniz kullanıcıları bir süre sonra manuel siliyor olabilirsiniz. Bu yazımda sizlere Active Directory ortamında disable edilmiş kullanıcıları belirli bir süre sonra powershell ile otomatik olarak nasıl sildirebileceğimizi paylaşacağım.
Otomasyonu hazırlarken Active Directory üzerinde kullanıcıların disable edildiği tarih doğrudan bir attribute yazmadığı için disable edilen kullanıcıların description değerine hesabın disable edildiği tarihin yazıldığını varsayıyorum.
Disable Kullanıcıları Nasıl Otomatik Sildirilir?
Öncelikle powershell Active Directory modülümüzü import ediyoruz.
Import-Module -Name ActiveDirectory
Kaç gün sonra sileceğimizi belirleyip değişken olarak tanımlıyoruz. Ben disable edilen kullanıcının 30 gün silinmesini istemediğim için 31 gün olarak belirledim.
$AyYil = (get-date).Adddays(-31).ToString("dd.MM.yyy")
Get-ADUser komutu ile “Disable Users” ousu içerisinde disable edilmiş kullanıcıların description attribute’unda $AyYil değişkeni ile filtreleyip “C:\Tasklar\” klasörüne export ediyoruz.
Get-ADUser -SearchBase "OU=Disable Users,DC=Resul,DC=local" -Filter {Enabled -eq $False} -properties * | Where-Object {$_.Description -like "*$AyYil*"} | Select-Object -Property Name, SamAccountName, Description,Enabled | Export-Csv -path "C:\Tasklar\$AyYil-Silinen-Kullanicilar.csv" -Delimiter ';' -NoType
Aldığımız exportun boyutu 0kb dan büyükse exportu import edip Remove-ADUser komutu ile kullanıcıları siliyoruz.
If ((Get-Item "C:\Tasklar\$AyYil-Silinen-Kullanicilar.csv").Length -gt 0kb) { Import-Csv -Path "C:\Tasklar\$AyYil-Silinen-Kullanicilar.csv" -Delimiter ';' | ForEach {Remove-ADUser $_.SamAccountName -confirm:$false} }
Bu scripti task scheduler günde 1 kez çalışacak şekilde eklerseniz her çalıştığında “Disable Users” ou içerisinde description attirbute’unda 31 gün öncesinin tarihi yazan disable kullanıcıları silecektir.
Ben bu script her çalıştığında silinen kullanıcı bilgilerini mail ile silinen kullanıcı sayısını ise teams üzerinden bilgi olarak gönderiyorum. Sizlerde istediğiniz gibi geliştirebilirsiniz.
Scriptin tam hali;
$AyYil = (get-date).Adddays(-31).ToString("dd.MM.yyy") Get-ADUser -SearchBase "OU=Disable Users,DC=Resul,DC=local" -Filter {Enabled -eq $False} -properties * | Where-Object {$_.Description -like "*$AyYil*"} | Select-Object -Property Name, SamAccountName, Description,Enabled | Export-Csv -path "C:\Tasklar\$AyYil-Silinen-Kullanicilar.csv" -Delimiter ';' -NoType If ((Get-Item $filepath).Length -gt 0kb) { Import-Csv -Path "C:\Tasklar\$AyYil-Silinen-Kullanicilar.csv" -Delimiter ';' | ForEach {Remove-ADUser $_.SamAccountName -confirm:$false} }
Yorumlar (0)