Active Directory

Bu yazı da Active Directory de belirli bir süredir oturum açılmayan bilgisayar hesaplarının script ile otomatik olarak Nasil silineceğinden bahsedeceğim.

Active Directory de domaine dahil edilen her bilgisayar için bir adet bilgisayar hesabı oluşturulur. İlgili bilgisayar domainde aktif olduğu sürece hesabı aktif kalmalıdır ve yine işin normalinde bilgisayarın artık domainde olmasına gerek kalmadığında domainden çıkarılması gerekmektedir. Ancak genelde bilgisayarlarda sorun yaşandığında format atmadan önce, yada eskiyen bilgisayarı kapatıp hurdaya göndermeden önce domainden çıkarma işlemini pek yapmayız. Bu verdiğim örnekler ve/veya farklı senaryolar da Active Directory veritabanında aslında artık kullanılmayan bilgisayar hesapları sayısı artmaya başlar. Belirli bir süre sonra ise iyice çöplüğe dönüşür.

İşte bu gibi durumlarda Sistem yöneticisi olarak bir script ile Active directory veritabanındaki tüm bilgisayar hesaplarının en son ne zaman oturum açıldığı bilgisine bakıp belirleyeceğimiz günden eski bilgisayar hesaplarının silinmesini sağlayabiliriz.

Hadi Başlayalım

Active Directory de bir bilgisayar hesabının “LastLogonDate” attribute değerine bakarak e son ne zaman oturum açılmış bilgisine ulaşabiliriz.

Bunun için önce “Advanced Features” i açmamız gerekmektedir.

Active Directory Advanced Features Açılması

Daha sonra aşağıdaki gibi bilgisayar hesabının Properties bölümüne girince gelen ekranda “Attribute Editor” sekmesinde “Last Logon” değerini görebilirsiniz. Kullanacağımız Script de bu alana bakarak işlem yapmaktadır.

LastLogonDate Görme Ekranı

Kullanacağımız Script 90 günden eski oturum açmayan bilgisayar hesaplarını önce devre dışı bırakacak, daha sonra 120 günden eski oturum açmayan bilgisayar hesaplarını silecek.

Script aşağıdadır. Bu scripti *.ps1 powershell olarak kaydedip Domain Controller sunucularınızdan herhangi birinde zamanlanmış görev olarak her gün gece saatlerinde çalıştırtabilirsiniz.

$CurrentDate = Get-Date
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy_hh-mm-ss')
$then = (Get-Date).AddDays(-90) # Buradaki 90 değeri bilgisayar hesabının devredışı bırakılacağı gün sınırıdır.
#Get-ADComputer -SearchBase "OU=Bilgisayarlar,DC=astronur,DC=com" -Property Name,lastLogonDate -Filter {lastLogonDate -lt $then} | FT Name,lastLogonDate

# Bu bölüm bilgisayar hesabını devredışı bırakmak içindir.
##Alttaki Satır 90 günden eski oturum açmayan bilgisayar hesaplarını C:\tmp\90Days_Disable_Computers_$CurrentDate.csv şeklinde bir dosyaya kaydeder.
Get-ADComputer -SearchBase "OU=Bilgisayarlar,DC=astronur,DC=com" -Property Name,lastLogonDate -Filter {(lastLogonDate -lt $then) -and (Enabled -eq $true)} | Select-Object Name | Export-Csv -Path "C:\tmp\90Days_Disable_Computers_$CurrentDate.csv" -Encoding UTF8
##Alttaki satır 90 günden eski oturum açmayan bilgisayar hesaplarını devredışı bırakıp Açıklama bölümüne açıklama yazar
Get-ADComputer -SearchBase "OU=Bilgisayarlar,DC=astronur,DC=com" -Property Name,lastLogonDate -Filter {(lastLogonDate -lt $then) -and (Enabled -eq $true)} | Set-ADComputer -Enabled $false -Confirm:$false -Description "90 Günden fazla oturum açılmadığı için sistem tarafından pasif yapılmıştır."


# Bu bölüm bilgisayar hesabını silmek içindir.
$then2 = (Get-Date).AddDays(-120) # Buradaki 120 değeri bilgisayar hesabının silineceği gün sınırıdır.
##Alttaki Satır 120 günden eski oturum açmayan bilgisayar hesaplarını C:\tmp\120Days_Deleted_Computers_$CurrentDate.csv şeklinde bir dosyaya kaydeder.
Get-ADComputer -SearchBase "OU=Bilgisayarlar,DC=astronur,DC=com" -Property Name,lastLogonDate, DistinguishedName -Filter {lastLogonDate -lt $then2} | Select-Object Name | Export-Csv -Path "C:\tmp\120Days_Deleted_Computers_$CurrentDate.csv" -Encoding UTF8
##Alttaki satır 120 günden eski oturum açmayan bilgisayar hesaplarını siler.
Get-ADComputer -SearchBase "OU=Bilgisayarlar,DC=astronur,DC=com" -Property Name,lastLogonDate, DistinguishedName -Filter {lastLogonDate -lt $then2} | Remove-ADObject -Recursive -Confirm:$false

Burada -SearchBase “OU=Bilgisayarlar,DC=astronur,DC=com” kısmında kendi OU nuzun bilgilerini giriniz. Ayrıca C:\tmp\ adında bir klasör oluşturunuz dosyaların oluşması için. Eğer faklı bir dizin kullanacaksanız scriptte de o şekilde güncelleyin.

 

Leave a Reply Cevabı iptal et

Instagram

[instagram-feed num=6 cols=6 showfollow=false showheader=false showbutton=false showfollow=false]