Active Directory (AD) kurumların kimlik yönetiminde en kritik bileşenlerden biridir. Kullanıcı hesaplarının oluşturulması, yönetilmesi ve gerektiğinde devre dışı bırakılması günlük iş yükünün önemli bir kısmını oluşturur.
Ancak özellikle yüzlerce veya binlerce kullanıcının aynı anda devre dışı bırakılması gerektiğinde manuel işlem yapmak hem zaman kaybı hem de hata riski doğurur.
PowerShell bu noktada sistem yöneticilerinin en güçlü yardımcısıdır. CSV dosyası kullanarak toplu işlemler yapmak, süreci hem hızlandırır hem de hatasız hale getirir.
Bu makalemde CSV dosyası ile kullanıcı hesaplarını topluca devre dışı bırakma yöntemini adım adım ele alacağız. Ayrıca sık yapılan hatalara, loglama yöntemlerine ve en iyi uygulamalara da değineceğiz.
CSV Dosyasını Hazırlama
Toplu işlem için ilk adım devre dışı bırakılacak kullanıcıların listesini hazırlamaktır.
Bunun için SamAccountName değerlerini içeren bir CSV dosyası oluşturmalısınız.
Örnek CSV dosyası:
SamAccountName
kullanici1
kullanici2
kullanici3
Dikkat edilmesi gerekenler:
- İlk satır başlık olmalı ve SamAccountName olarak yazılmalı.
- Kullanıcı adlarında boşluk veya yazım hatası olmamalı.
- CSV dosyasını UTF-8 formatında kaydetmek uyumluluk sorunlarını önler.
Önerim: CSV dosyasını oluştururken hangi kullanıcıların devre dışı bırakılacağını iş birimleriyle koordine ederek hazırlayın. Böylece yanlışlıkla aktif kullanıcıların erişiminin kesilmesini önlersiniz.
PowerShell Komutu ile Kullanıcıları Devre Dışı Bırakma
CSV dosyanız hazır olduktan sonra kullanıcıları devre dışı bırakmak için aşağıdaki PowerShell komutunu kullanabilirsiniz:
Import-Csv -Path "C:\Users\velikadirkozan\Desktop\disable_edilecek_users.csv" | ForEach-Object {
$samAccountName = $_.SamAccountName
Disable-ADAccount -Identity $samAccountName
}
Komutun Açıklaması:
- Import-Csv → CSV dosyasını okur.
- ForEach-Object → Her satır için işlem yapar.
- $_ → O anki satırdaki veriyi temsil eder.
- Disable-ADAccount → İlgili kullanıcının AD hesabını devre dışı bırakır.
Önerim: Bu komutu çalıştırmadan önce küçük bir test grubu üzerinde deneyin. Örneğin 2-3 kullanıcı seçip CSV dosyasına ekleyin ve sürecin doğru çalıştığını görün.
İşlemleri Loglama ve İzleme
Toplu işlemlerde en önemli nokta yapılan işlemlerin kayıt altına alınmasıdır. Aksi halde hangi kullanıcının ne zaman devre dışı bırakıldığı sonradan takip edilemez.
Aşağıdaki komut her işlem sonrası bir log dosyasına çıktı yazdırır:
Import-Csv -Path "C:\Users\velikadirkozan\Desktop\disable_edilecek_users.csv" | ForEach-Object {
$samAccountName = $_.SamAccountName
Disable-ADAccount -Identity $samAccountName
Add-Content -Path "C:\Users\velikadirkozan\Desktop\disable_log.txt" -Value "$samAccountName devre dışı bırakıldı - $(Get-Date)"
}
Bu sayede:
- Hangi kullanıcıların devre dışı bırakıldığı,
- Hangi tarihte işlem yapıldığı kayıt altına alınır.
Sık Yapılan Hatalar ve Çözümler
- Yanlış başlık kullanmak (ör. Username yerine SamAccountName)
- Çözüm: CSV dosyasındaki başlık tam olarak
SamAccountName
olmalı.
- Çözüm: CSV dosyasındaki başlık tam olarak
- Kullanıcı adı hataları
- Çözüm: CSV’ye kullanıcıları doğrudan AD’den çekmek daha güvenli:
Get-ADUser -Filter * -SearchBase "OU=Departman,DC=domain,DC=local" | Select SamAccountName | Export-Csv C:\disable_list.csv -NoTypeInformation
- Çözüm: CSV’ye kullanıcıları doğrudan AD’den çekmek daha güvenli:
- Yetki eksikliği
- Çözüm: Komutu çalıştıran kullanıcının AD üzerinde hesap devre dışı bırakma yetkisine sahip olması gerekir.
- Yanlış dosya yolu
- Çözüm: Dosya yolunu tam belirtin, boşluk varsa tırnak içinde yazın.
En İyi Uygulamalar
- Test ortamında deneyin: Önce az sayıda kullanıcıyla test edin.
- Yetkileri kısıtlayın: Sadece ilgili OU üzerindeki hesaplar için işlem yapacak şekilde filtre ekleyin.
- Backup alın: Büyük çaplı işlemlerden önce AD’nin yedeğini almak kritik önem taşır.
- Filtreleme kullanın: Örneğin yalnızca devre dışı bırakılması gereken kullanıcıları CSV’ye almak için:
Get-ADUser -Filter {Enabled -eq $true -and Department -eq "Stajyer"} | Select SamAccountName
- Raporlama yapın: İşlem sonrası hangi kullanıcıların devre dışı bırakıldığını raporlayın ve ilgili yöneticilere iletin.
Gelişmiş Senaryolar
- Toplu Kullanıcı Aktif Etme: Yanlışlıkla devre dışı bırakılan kullanıcıları geri açmak için:
Enable-ADAccount -Identity "kullanici1"
- Kullanıcıları Belirli OU’ya Taşımak: Devre dışı bırakılan kullanıcıları belirli bir OU’ya taşımak için:
Move-ADObject -Identity (Get-ADUser -Identity "kullanici1").DistinguishedName -TargetPath "OU=DisabledUsers,DC=domain,DC=local"
- Tüm Süreci Otomatikleştirmek: Script içine hem disable işlemini hem de OU taşımasını koyabilirsiniz.