Follow
Follow

PowerShell ile Active Directory Yönetimi: Tek Komutla İnaktif Hesapları ve Süresi Dolan Parolaları Tespit Etme

PowerShell ile Active Directory’de inaktif hesapları ve süresi dolmak üzere olan parolaları tek komutla nasıl tespit ettiğimi, örnek scriptlerle anlatıyorum.

Büyüyen bir organizasyonda, kullanılmayan hesapları ve parolası dolmak üzere olan kullanıcıları elle takip etmek imkânsız hale gelir. PowerShell’in Active Directory modülü, bu tür denetimleri tek satırlık komutlara indirger.

90 Gündür Giriş Yapmayan Hesapları Bulma

Import-Module ActiveDirectory

Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate |
    Where-Object {$_.LastLogonDate -lt (Get-Date).AddDays(-90)} |
    Select-Object Name, SamAccountName, LastLogonDate |
    Sort-Object LastLogonDate

Dikkat: LastLogonDate özelliği, domain controller’lar arası replikasyon nedeniyle küçük gecikmeler gösterebilir. Kritik kararlar için LastLogonTimestamp‘ı da çapraz kontrol etmenizi öneririm.

Parolası Yakında Dolacak Kullanıcıları Tespit Etme

$gün = 7
Get-ADUser -Filter {Enabled -eq $true} -Properties PasswordExpired, PasswordLastSet, msDS-UserPasswordExpiryTimeComputed |
    Where-Object {
        $_.PasswordExpired -eq $false -and
        [datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed") -lt (Get-Date).AddDays($gün)
    } |
    Select-Object Name, SamAccountName, @{N='ParolaBitişi';E={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}

Otomatik E-posta Bildirimi ile Birleştirme

Bu tür sorguları tek seferlik çalıştırmak yerine, zamanlanmış bir görev (Scheduled Task) olarak haftalık çalıştırıp sonucu ilgili kişilere otomatik e-posta ile göndermek, gerçek operasyonel değeri ortaya çıkarır:

$kullanicilar = Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate |
    Where-Object {$_.LastLogonDate -lt (Get-Date).AddDays(-90)}

if ($kullanicilar) {
    $body = $kullanicilar | ConvertTo-Html -Property Name, SamAccountName, LastLogonDate | Out-String
    Send-MailMessage -From "[email protected]" -To "[email protected]" `
        -Subject "90+ Gün İnaktif Hesap Raporu" -Body $body -BodyAsHtml -SmtpServer "smtp.sirket.com"
}

İnaktif Hesapları Otomatik Devre Dışı Bırakma (Dikkatli Kullanım)

Tespit ile aksiyon arasına her zaman bir onay adımı koymanızı öneririm. Tam otomatik devre dışı bırakma riskli olabilir (örn. uzun izinli bir çalışanın hesabı yanlışlıkla kapatılabilir):

# Önce sadece raporla, WhatIf ile test et
Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate |
    Where-Object {$_.LastLogonDate -lt (Get-Date).AddDays(-180)} |
    Disable-ADAccount -WhatIf

-WhatIf parametresi, gerçekte hiçbir değişiklik yapmadan “bu komut çalışsaydı neler olurdu” senaryosunu gösterir — production script’lerinde test aşamasında vazgeçilmezdir.

Sonuç

PowerShell + AD modülü kombinasyonu, manuel olarak saatler sürecek denetimleri saniyeler içinde, düzenli ve tutarlı şekilde yapmanızı sağlar. Anahtar, bu scriptleri tek seferlik değil, zamanlanmış ve raporlanan bir sürece dönüştürmektir.

Comments
Join the Discussion and Share Your Opinion
Add a Comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Newsletter
Join Design Community
Get the latest updates, creative tips, and exclusive resources straight to your inbox. Let’s explore the future of design and innovation together.