Active Directory'de CSV dosyasından toplu kullanıcı oluşturmak

Active Directory'de CSV Dosyasından Toplu Kullanıcı Oluşturma 

Active Directory ortamında çok sayıda kullanıcıyı hızlı ve verimli bir şekilde oluşturmak için PowerShell scriptleri kullanabilirsiniz. Bu yazıda, CSV dosyasından toplu kullanıcı oluşturma işlemini adım adım ele alacağız.

Ön Hazırlık

CSV Dosyası Hazırlama

 

Örnek CSV dosyası

Kullanmadan önce mutlaka değiştirmeniz gerekenler:

  1. Domain: sirket.local yerine kendi domain adınızı yazın
  2. OU: OU=Kullanicilar,DC=sirket,DC=local yerine kendi OU yapınızı yazın
  3. Şifreler: Güvenlik için farklı, güçlü şifreler kullanın
  4. Grup: Grup adlarının AD'nizde mevcut olduğundan emin olun

CSV Dosyasını Kaydetme

  1. Notepad veya Excel ile açın

  2. Dosya → Farklı Kaydet seçeneğine tıklayın

  3. Dosya adı: kullanicilar.csv

  4. Dosya türü: CSV (virgülle ayrılmış) seçin

  5. Kodlama: UTF-8 olarak kaydedin

 

Ad,Soyad,Domain,OU,Sifre,Departman,Unvan,Aciklama,Grup,Yonetici,Telefon
Ahmet,Yılmaz,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Ahmet2024!,Muhasebe,Bakım Teknisyeni,Bakım Departmanı Teknisyeni,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1001
Ayşe,Demir,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Ayse2024!,Muhasebe,Mekanik Mühendis,Uçak Bakım Mühendisi,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1002
Mehmet,Kaya,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Mehmet2024!,Muhasebe,Aviyonik Teknisyeni,Aviyonik Sistemler Uzmanı,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1003
Fatma,Şahin,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Fatma2024!,Muhasebe,Kalite Kontrol Uzmanı,Bakım Kalite Kontrolü,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1004
Ali,Çelik,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Ali2024!,Muhasebe,Motor Teknisyeni,Motor Bakım Uzmanı,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1005
Zeynep,Arslan,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Zeynep2024!,Muhasebe,Bakım Müdürü,Bakım Departman Müdürü,Muhasebe_Yonetim,Mehmet Yılmaz,+90 242 330 1006
Mustafa,Aydın,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Mustafa2024!,Muhasebe,Yapısal Tamirci,Uçak Gövde Tamiri,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1007
Elif,Özkan,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Elif2024!,Muhasebe,NDT Teknisyeni,Tahribatsız Muayene Uzmanı,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1008
Hakan,Kurt,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Hakan2024!,Muhasebe,Elektrik Teknisyeni,Elektrik Sistemleri Uzmanı,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1009
Selin,Yıldız,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",Selin2024!,Muhasebe,Planlama Uzmanı,Bakım Planlama ve Dokümantasyon,Muhasebe_Yonetim,Mehmet Yılmaz,+90 242 330 1010
Can,Özdemir,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",,Muhasebe,Hidrolik Teknisyeni,Hidrolik Sistemler Uzmanı,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1011
Deniz,Yalçın,sirket.com,"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local",,Muhasebe,Kompozit Tamirci,Kompozit Malzeme Uzmanı,Muhasebe_Ekibi,Mehmet Yılmaz,+90 242 330 1012

PowerShell Scripti

 
Import-Module ActiveDirectory

# CSV dosya yolu - kendi dosya yolunuzu girin
$csvPath = "C:\Users\kullanicilar.csv"


$users = Import-Csv -Path $csvPath -Encoding UTF8

# İsim düzeltme fonksiyonu (ilk harf büyük, diğerleri küçük)
function Format-ProperCase {
    param([string]$text)
    if ([string]::IsNullOrEmpty($text)) { return $text }
    
    # İlk harfi büyük, diğerlerini küçük yap
    return $text.Substring(0,1).ToUpper() + $text.Substring(1).ToLower()
}


foreach ($user in $users) {
    
    # Ad ve Soyadı düzelt (ilk harf büyük, diğerleri küçük)
    $firstName = Format-ProperCase -text $user.Ad
    $lastName = $user.Soyad.ToUpper()  # Soyad tamamen büyük harf
    
    # Ad ve Soyadı düzelt (ilk harf büyük, diğerleri küçük)
    $firstName = Format-ProperCase -text $user.Ad
    $lastName = Format-ProperCase -text $user.Soyad
    
    # Kullanıcı adını otomatik oluştur (ismin ilk harfi + soyad)
    $username = ($firstName.Substring(0,1) + $lastName).ToLower()
    # Türkçe karakterleri düzelt
    $username = $username -replace 'ç','c' -replace 'ğ','g' -replace 'ı','i' -replace 'ö','o' -replace 'ş','s' -replace 'ü','u'
    
    # E-posta adresini otomatik oluştur (ismin ilk harfi + soyad)
    $emailAddress = "$username@sirket.local"
    
    # Yönetici bilgisini al (eğer varsa)
    $managerDN = $null
    if ($user.Yonetici) {
        try {
            $manager = Get-ADUser -Filter "Name -eq '$($user.Yonetici)'" -ErrorAction SilentlyContinue
            if ($manager) {
                $managerDN = $manager.DistinguishedName
            }
        } catch {
            Write-Host "Yönetici bulunamadı: $($user.Yonetici)" -ForegroundColor Yellow
        }
    }
    
    # Şifre belirtilmemişse varsayılan şifre kullan
    $password = if ($user.Sifre) { $user.Sifre } else { "SiFr3123!1" }
    
    # Kullanıcı parametreleri
    $params = @{
        Name                  = "$firstName $lastName"
        GivenName            = $firstName
        Surname              = $lastName
        SamAccountName       = $username
        UserPrincipalName    = "$username@$($user.Domain)"
        EmailAddress         = $emailAddress
        Path                 = $user.OU
        AccountPassword      = (ConvertTo-SecureString $password -AsPlainText -Force)
        Enabled              = $true
        ChangePasswordAtLogon = $true
        Department           = $user.Departman
        Title                = $user.Unvan
        Description          = $user.Aciklama
        MobilePhone          = $user.Telefon
    }
    
    # Yönetici varsa ekle
    if ($managerDN) {
        $params.Add('Manager', $managerDN)
    }
    
    try {
       
        New-ADUser @params
        Write-Host "Kullanıcı oluşturuldu: $username ($emailAddress)" -ForegroundColor Green
        
        # Eğer grup bilgisi varsa gruba ekle
        if ($user.Grup) {
            Add-ADGroupMember -Identity $user.Grup -Members $username
            Write-Host "  → Gruba eklendi: $($user.Grup)" -ForegroundColor Cyan
        }
    }
    catch {
        Write-Host "Hata: $username - $($_.Exception.Message)" -ForegroundColor Red
    }
}

Write-Host "`nİşlem tamamlandı!" -ForegroundColor Yellow

Script Özellikleri

Otomatik Kullanıcı Adı Oluşturma

  • İsim + Soyad kombinasyonu

  • Türkçe karakter dönüşümü

  • Küçük harf formatı

Akıllı İsim Formatlama

  • Ad ve soyad için ilk harf büyük, diğerleri küçük

  • Türkçe karakter desteği

Esnek Şifre Yönetimi

  • CSV'de şifre belirtilmemişse varsayılan şifre kullanımı

  • İlk girişte şifre değiştirme zorunluluğu

Grup ve Yönetici Atama

  • Otomatik grup üyeliği

  • Yönetici atama desteği

Kullanmadan Önce Dikkat Edilmesi Gerekenler

1. Domain Bilgisi

 
# Script içindeki domain bilgisini kontrol edin
$emailAddress = "$username@sirket.local"

sirket.local yerine kendi domain adınızı yazın.

2. OU Yapısı

 
# Örnek OU yapısı
"OU=Muhasebe,OU=A-Office,DC=sirket,DC=local"

Kendi OU yapınıza göre düzenleyin.

3. Güvenlik

  • Şifre politikasına uygun güçlü şifreler kullanın

  • Varsayılan şifreyi değiştirin

  • Test ortamında deneyin

4. Grup Kontrolü

  • Grup adlarının AD'nizde mevcut olduğundan emin olun

  • Grup yoksa önceden oluşturun

Çalıştırma Adımları

  1. PowerShell'i yönetici olarak çalıştırın

  2. Execution Policy ayarlayın:

    powershell
    Set-ExecutionPolicy RemoteSigned
  3. Script dosya yolunu güncelleyin

  4. CSV dosyasını kontrol edin

  5. Scripti çalıştırın

Hata Ayıklama İpuçları

  • PowerShell modülünü kontrol edin: Get-Module ActiveDirectory

  • CSV kodlamasını kontrol edin: UTF-8 kullanın

  • OU yolunu doğrulayın: Get-ADOrganizationalUnit

  • Grupları kontrol edin: Get-ADGroup

Sonuç

Bu script ile:

  • ✅ Toplu kullanıcı oluşturma

  • ✅ Otomatik grup atama

  • ✅ Yönetici ilişkisi kurma

  • ✅ Profesyonel e-posta adresi oluşturma

  • ✅ Türkçe karakter desteği

  • ✅ Hata yönetimi

işlemlerini tek seferde gerçekleştirebilirsiniz.

Önemli: Production ortamında kullanmadan önce mutlaka test ortamında deneyin ve güvenlik ayarlarını gözden geçirin.

Önceki Yazı Unicorn: Sosyal Mühendisliğin "Sihirli" Aracı ve Nasıl Korunursunuz?
Unicorn: Sosyal Mühendisliğin "Sihirli" Aracı ve Nasıl Korunursunuz?

Unicorn: Sosyal Mühendisliğin "Sihirli" Aracı ve Nasıl Korunursunuz?...

Sonraki Yazı  IAM mı PAM mı? İşte Sistem Güvenliğinizin Anahtarı!
IAM mı PAM mı? İşte Sistem Güvenliğinizin Anahtarı!

Güçlü bir siber güvenlik stratejisi, hem IAM hem de PAM'ın uyum içinde ça...