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.
PowerShell CSV ile Toplu Kullanıcı Provizyonu makalesi kapak görseli

Otuz kırk yeni personelin aynı hafta işe başladığı bir dönemi hatırlıyorum — her biri için tek tek AD hesabı açmak, departman OU’sunu seçmek, grup üyeliklerini atamak… Bu iş elle yapıldığında hem yavaş hem de hataya son derece açık. CSV tabanlı bir PowerShell script’i bu süreci dakikalara indiriyor.

CSV Dosya Yapısı

İK’dan tipik olarak şu formatta bir liste geliyor:

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 tamamlıyor:

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ı gerekiyor; bunun için try/catch bloğu kritik önemde:

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
        Add-Content -Path "C:\Loglar\provizyon_hatalari.log" -Value "$($k.Ad) $($k.Soyad): $($_.Exception.Message)"
    }
}

Burada gözden kaçırılmaması gereken bir ayrıntı var: SamAccountName oluştururken Türkçe karakterlerin (ı, ğ, ü, ş, ö, ç) doğrudan kullanılması sistem hatalarına yol açabiliyor. Yukarıdaki script’teki -replace ifadesi bu karakterleri temizleyerek, üretimde en sık karşılaşılan hatalardan birini daha script çalışmadan önler.

Pratikte Ne Değişir

Bu script bir kez doğru kurulduktan sonra, her yeni işe alım döneminde yapmanız gereken tek şey CSV dosyasını güncelleyip script’i çalıştırmak. Saatlerce sürecek manuel iş, birkaç dakikalık bir kontrol işlemine dönüşüyor.

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.