Site icon Emre'nin Sistem Odası

Active Directory’de Kullanılmayan Bilgisayarları Bulma ve Temizleme

Domaine alınmış fakat artık kullanılmayan (Inactive) bilgisayarlar Active Directory’de obje olarak varlığını sürdürmekte ve uzun süre bu objeler temizlenmezse Active Directory’de karmaşıklığa yol açmaktadır. Bu nedenle belirli aralıklarla bu objelerin temizlenmesi temiz ve düzenli bir Active Directory yapısı için gereklidir diyebiliriz.

Domain adı emres.com olan bir domainde sunucu olmayan, 180 gündür oturum açılmamış makinelerin listesini veren ve bu makineleri silen script aşağıdaki gibidir.

Import-Module activedirectory

# Parametreler girilir.
$domain = "emres.com"
$DaysInactive = 180
$time = (Get-Date).Adddays(-($DaysInactive))
$date = Get-Date ($time) -UFormat %d.%m.%y
$File = "c:\Scripts\Inactive_Computers\Inactive_Computers.csv"

# Son 180 günde oturum açılmamış bilgisayarları $file yolundaki dosyaya listeler
$CompList = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time -and operatingSystem -notlike "*server*"} -SearchBase "DC=emres, DC=com" -Properties Name,LastLogonTimeStamp,OperatingSystem | 
Select-Object Name, OperatingSystem, @{Name="Last Logon TimeStamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | Export-Csv $File -encoding UTF8 -notypeinformation

# Son 180 günde oturum açılmamış bilgisayarların isimlerini toplar
$Computers = Get-ADComputer -Filter {LastLogonTimeStamp -lt $time -and operatingSystem -notlike "*server*"} -SearchBase "DC=emres, DC=com" -Properties Name,LastLogonTimeStamp,OperatingSystem |
Select-Object -ExpandProperty Name

# Toplanan bilgisayarları domainden siler. Silinenleri ve silinmeyenleri loglar
ForEach ($Computer in $Computers)
{   Try {
        Remove-ADComputer -Identity $Computer -ErrorAction Stop -confirm:$false
        Add-Content c:\Scripts\Inactive_Computers\removed-computers.log -Value "$Computer silindi"
    }
    Catch {
        Add-Content c:\Scripts\Inactive_Computers\not-removed-computers.log -Value "$Computer bulunamadi $($Error[0])"
    }
}

Bu scriptte dikkat edilmesi gereken satırlar aşağıdaki gibidir.

$domain = “emres.com”

Bu satırda domain adı belirtilmiştir.

$DaysInactive = 180

Bu satırda kaç gün logon olunmamış makinelerin silineceği belirtilmiştir.

Scriptte makine isimlerini, işletim sistemlerini ve son logon tarihlerini içeren çıktının verileceği yol C:\Scripts\Inactive_Computers\Inactive_Computers.csv olarak tanımlanmıştır.

Scriptin devamını incelediğimizde dosya içindeki her bir makinenin adını alıp bu makineyi Active Directory’den kaldırmayı denemektedir. Ayrıca işlemin başarılı ve başarısız tamamlandığı makineler için iki farklı log dosyasının oluşturulduğunu görmekteyiz.

Faydalı olması dileğiyle …

Exit mobile version