Script etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Script etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Kasım 2024 Perşembe

DC Üzerinde Hesap Kilitlenme Lockout Olaylarını Sorgulamak İçin Yazılmış Script

 Bu PowerShell script'i, belirtilen bir kullanıcının (SAMAccountName formatında tanımlanan) Domain Controller'larda (DC) hesap kilitlenme (Account Lockout) olaylarını sorgulamak için yazılmış. Script, tüm DC'leri tarayarak her birinde Event ID 4740 (Hesap Kilitlenme) olaylarını kontrol eder.

Script'in işleyişi şu şekildedir:

  1. Kullanıcı Adı Tanımlama: $userName değişkeni, aramak istediğiniz kullanıcı adını belirtiyor. "kullanici_adi" kısmını SAMAccountName formatında bir kullanıcı adı ile değiştirmelisiniz.

  2. Tüm Domain Controller'ları Almak: (Get-ADDomainController -Filter *).Hostname ifadesiyle tüm DC'lerin isimlerini $DomainControllers adlı bir değişkene atar.

  3. Olay Günlüklerini Sorgulama: Her bir DC için, Event ID 4740 olaylarını filtreler. Bu olay, bir hesabın kilitlendiğini belirtir.

  4. Sonuçların Filtrelenmesi: $_.Properties[0].Value değişkeni, kilitlenen hesabın adını içerir. Bu değer $userName ile eşleşiyorsa olay listelenir.

  5. Sonuçların Çıktısı: Olayın gerçekleştiği zaman (TimeCreated), kilitlenen hesap adı (AccountLockedOut) ve kilitlenmeye neden olan bilgisayar (CallerComputerName) bilgileri listelenir.

Script'in çıktısı, olayların zaman damgalarını, kilitlenen hesap adını ve bu olaya neden olan bilgisayarın adını gösterir.

Örnek Kullanım:

Eğer kilitlenmeyi yaşayan kullanıcı adınız "hakan.test" ise script’in başındaki $userName değişkenini şu şekilde güncelleyin:

# Kullanıcının hesap adı (SAMAccountName formatında) ile değiştirilmesi gereken değişken 
$userName = "hakan.test" 

  

# Tüm Domain Controller'lardan Event ID 4740'ı sorgulama 


Aşağıdaki script DC üzerinde PowerShell ISE uygulaması admin yetkisi ile çalıştırılarak açılan ekrandanscript eklenir ve ardından çalıştır butonu sorgulama yapılır.


Script:


$DomainControllers = (Get-ADDomainController -Filter *).Hostname 

  

foreach ($DC in $DomainControllers) { 
    Write-Host "Checking logs on Domain Controller: $DC" 

  

    Get-WinEvent -ComputerName $DC -FilterHashtable @{ 
        LogName = 'Security'; 
        Id = 4740 
    } | Where-Object { 
        $_.Properties[0].Value -like "*$userName*" 
    } | ForEach-Object { 
        [PSCustomObject]@{ 
            TimeCreated = $_.TimeCreated 
            AccountLockedOut = $_.Properties[0].Value 
            CallerComputerName = $_.Properties[1].Value 
        } 
    } 
}