Active Directory ortamında çok sayıda kullanıcıyı hızlı ve verimli bir şekilde oluşturmak için PowerShell scriptleri kullanabilirsiniz
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:
- Domain:
sirket.localyerine kendi domain adınızı yazın - OU:
OU=Kullanicilar,DC=sirket,DC=localyerine kendi OU yapınızı yazın - Şifreler: Güvenlik için farklı, güçlü şifreler kullanın
- Grup: Grup adlarının AD'nizde mevcut olduğundan emin olun
CSV Dosyasını Kaydetme
-
Notepad veya Excel ile açın
-
Dosya → Farklı Kaydet seçeneğine tıklayın
-
Dosya adı:
kullanicilar.csv -
Dosya türü: CSV (virgülle ayrılmış) seçin
-
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
MobilePh
}
# 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ı
-
PowerShell'i yönetici olarak çalıştırın
-
Execution Policy ayarlayın:
Set-ExecutionPolicy RemoteSigned -
Script dosya yolunu güncelleyin
-
CSV dosyasını kontrol edin
-
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.