PowerShell ile Active Directory Kullanıcı Yönetimini Otomatikleştirme
CSV'den yüzlerce kullanıcı oluşturmak, parola politikalarını denetlemek ve tekrarlayan AD işlerini tek betiğe indirmek: sahada kullandığım PowerShell reçeteleri.
Sistem yöneticisinin günü tekrarlarla doludur: kullanıcı aç, grup ekle, parola sıfırla. Active Directory bu işlerin tamamını PowerShell üzerinden otomatikleştirmenize izin verir; üstelik grafik arayüzden çok daha hızlı ve denetlenebilir şekilde.
Neden Otomasyon?
- Aynı işlemi üçüncü kez elle yapıyorsanız betiğe dökme zamanı gelmiştir
- Betikler sürümlenir, gözden geçirilir ve tek tuşla geri alınabilir
- Denetim sırasında *ne zaman, neyin, kim tarafından* çalıştığı loglarda hazır durur
- Hata oranı elle yapılan toplu işlemlere göre belirgin şekilde düşer
CSV'den Toplu Kullanıcı Oluşturma
İK'dan gelen Excel'i CSV olarak kaydedin; sütunlar: Adi, Soyadi, KullaniciAdi, OU, GeciciSifre. Ardından aşağıdaki betik işin tamamını görür:
Import-Module ActiveDirectory
$kullanicilar = Import-Csv "C:\Scripts\yeni_kullanicilar.csv"
foreach ($k in $kullanicilar) {
$ad = "$($k.Adi) $($k.Soyadi)"
New-ADUser -Name $ad -GivenName $k.Adi -Surname $k.Soyadi -SamAccountName $k.KullaniciAdi -UserPrincipalName "$($k.KullaniciAdi)@firma.local" -Path $k.OU -Enabled $true
$sifre = ConvertTo-SecureString $k.GeciciSifre -AsPlainText -Force
Set-ADAccountPassword -Identity $k.KullaniciAdi -NewPassword $sifre -Reset
Set-ADUser -Identity $k.KullaniciAdi -ChangePasswordAtLogon $true
Write-Host "[OK] $ad olusturuldu" -ForegroundColor Green
}
Set-ADUser -ChangePasswordAtLogon parametresi sayesinde kullanıcı ilk oturumda geçici parolayı değiştirmeye zorlanır; bu, parola politikasıyla çelişmeden güvenli bir ilk giriş akışı sağlar.
Parola Politikasını Denetleme
Fine-grained parola politikaları (FGPP) devredeyse domain düzeyindeki varsayılan politika yanıltıcı olabilir. Hızlı kontrol:
Get-ADDefaultDomainPasswordPolicy | Select-Object ComplexityEnabled, MinPasswordLength, LockoutThreshold, LockoutDuration
Get-ADFineGrainedPasswordPolicy -Filter * | Select-Object Name, Precedence, MinPasswordLength
90 Gündür Pasif Hesaplar
Güvenlik ekibinin en sevdiği rapor, uzun süredir oturum açmamış hesapların listesidir:
Get-ADUser -Filter { Enabled -eq $true } -Properties LastLogonDate | Where-Object { $_.LastLogonDate -lt (Get-Date).AddDays(-90) } | Select-Object Name, SamAccountName, LastLogonDate | Export-Csv "C:\Rapor\pasif_hesaplar.csv" -NoTypeInformation -Encoding UTF8
Bu üç betiği görev zamanlayıcıya bağlayıp çıktısını e-posta ile aldığınızda AD yönetimi büyük ölçüde kendi kendine yürür. Bir sonraki yazıda Group Policy tarafındaki otomasyona bakacağız.