Follow
Follow

Toplu Kullanıcı ve Bilgisayar Provizyonu: CSV Verilerini PowerShell ile AD Nesnelerine Dönüştürme

İK’dan gelen CSV listelerini PowerShell ile toplu kullanıcı hesabına dönüştürme sürecini, hazır script örnekleriyle anlatıyorum.

Yeni bir dönemde 30-40 yeni personel işe başladığında, her birinin AD hesabını elle oluşturmak hem yavaş hem de hataya açıktır. PowerShell ile CSV tabanlı toplu provizyon, bu süreci dakikalara indirir.

CSV Dosya Yapısı

İK’dan tipik olarak şu formatta bir liste alırım:

Ad,Soyad,Departman,Unvan,Yonetici
Ahmet,Yılmaz,BT,Sistem Uzmanı,mmutlu
Ayşe,Kaya,Muhasebe,Muhasebe Uzmanı,bkaya

Toplu Kullanıcı Oluşturma Scripti

Import-Module ActiveDirectory
$kullanicilar = Import-Csv "C:\IK\yeni_personel.csv"

foreach ($k in $kullanicilar) {
    $samAccountName = ($k.Ad.Substring(0,1) + $k.Soyad).ToLower() -replace '[ığüşöç]', ''
    $upn = "[email protected]"
    $ouPath = "OU=$($k.Departman),OU=Kullanicilar,DC=sirket,DC=local"

    New-ADUser `
        -Name "$($k.Ad) $($k.Soyad)" `
        -GivenName $k.Ad `
        -Surname $k.Soyad `
        -SamAccountName $samAccountName `
        -UserPrincipalName $upn `
        -Path $ouPath `
        -Department $k.Departman `
        -Title $k.Unvan `
        -Manager $k.Yonetici `
        -AccountPassword (ConvertTo-SecureString "GeciciSifre!2026" -AsPlainText -Force) `
        -ChangePasswordAtLogon $true `
        -Enabled $true

    Write-Host "Oluşturuldu: $samAccountName" -ForegroundColor Green
}

Grup Üyeliklerini Otomatik Atama

Kullanıcı oluşturulduktan sonra, departmana göre ilgili gruplara otomatik eklemek süreci tamamlar:

foreach ($k in $kullanicilar) {
    $grup = "GRP-$($k.Departman)"
    Add-ADGroupMember -Identity $grup -Members ($k.Ad.Substring(0,1) + $k.Soyad).ToLower()
}

Hata Toleransı Eklemek

Üretim script’lerinde, bir kullanıcı için hata oluşsa bile scriptin tamamının durmaması için try/catch bloğu kritik:

foreach ($k in $kullanicilar) {
    try {
        # ... kullanıcı oluşturma kodu ...
        Write-Host "Başarılı: $($k.Ad) $($k.Soyad)" -ForegroundColor Green
    } catch {
        Write-Host "HATA: $($k.Ad) $($k.Soyad) - $($_.Exception.Message)" -ForegroundColor Red
        # Hataları ayrı bir log dosyasına da yazabilirsiniz
        Add-Content -Path "C:\Loglar\provizyon_hatalari.log" -Value "$($k.Ad) $($k.Soyad): $($_.Exception.Message)"
    }
}

Sahadan Bir Not: Türkçe Karakter Sorunu

SamAccountName oluştururken Türkçe karakterlerin (ı, ğ, ü, ş, ö, ç) doğrudan kullanılması sistem hatalarına yol açabilir. Yukarıdaki script’te -replace ile bu karakterleri temizlemek, üretimde karşılaşacağınız en yaygın hatalardan birini baştan önler.

Sonuç

CSV tabanlı toplu provizyon, özellikle yoğun işe alım dönemlerinde saatlerce sürecek manuel işi dakikalara indirir. Script’i bir kez doğru kurduktan sonra, her yeni dönemde sadece CSV dosyasını güncelleyip çalıştırmak yeterli olur.

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.