PowerShell

PowerShell ile Active Directory Kullanıcılarını CSV’ye Aktarma

Saha notu / teknik rehber Son kontrol 15 Ekim 2026 Konu merkezine dön →
Tolga CEYHAN Sistem Yönetimi & IT

PowerShell ile Active Directory kullanıcılarını CSV dosyasına aktarmak; envanter, denetim, lisanslama ve operasyonel raporlama için sık kullanılan işlemlerden biridir. Bu rehberde tüm domain yerine yalnız ihtiyaç duyulan kullanıcı özelliklerini sorgulayarak, isteğe bağlı OU filtresiyle temiz bir CSV çıktısı oluşturacağız.

Ön Koşullar

  • Active Directory PowerShell modülü (RSAT)
  • İlgili kullanıcı nesnelerini okumaya yetkili bir hesap
  • Çıktı klasöründe dosya sistemi izni
Get-Module -ListAvailable ActiveDirectory
Import-Module ActiveDirectory

Tüm AD Kullanıcılarını CSV’ye Aktarma

Yalnız raporda kullanacağınız özellikleri istemek, -Properties * ile gereksiz veri çekmekten daha kontrollüdür.

$OutputPath = Join-Path $env:SystemDrive "Exports"
$OutputCsv = Join-Path $OutputPath "AD_Users.csv"
New-Item -Path $OutputPath -ItemType Directory -Force | Out-Null
$Users = Get-ADUser -Filter * -Properties DisplayName,UserPrincipalName,Enabled,Department,Title,Mail,LastLogonDate
$Users | Select-Object SamAccountName,DisplayName,UserPrincipalName,Enabled,Department,Title,Mail,LastLogonDate | Export-Csv -Path $OutputCsv -NoTypeInformation -Encoding UTF8

Belirli Bir OU’daki Kullanıcıları Aktarma

Kurumsal yapılarda hedef OU’yu -SearchBase ile sınırlandırmak daha anlamlı olabilir. Aşağıdaki DN tamamen örnektir.

$SearchBase = "OU=Users,OU=HeadOffice,DC=contoso,DC=com"
$Users = Get-ADUser -Filter * -SearchBase $SearchBase -SearchScope Subtree -Properties DisplayName,UserPrincipalName,Enabled,Department,Title,Mail
$Users | Select-Object SamAccountName,DisplayName,UserPrincipalName,Enabled,Department,Title,Mail | Export-Csv -Path $OutputCsv -NoTypeInformation -Encoding UTF8

Yalnız Etkin Kullanıcıları Aktarma

$Users = Get-ADUser -Filter 'Enabled -eq $true' -SearchBase $SearchBase -Properties DisplayName,UserPrincipalName,Department,Mail
$Users | Select-Object SamAccountName,DisplayName,UserPrincipalName,Department,Mail | Export-Csv -Path $OutputCsv -NoTypeInformation -Encoding UTF8

Tekrar Kullanılabilir Export Scripti

[CmdletBinding()]
param(
    [string]$SearchBase,
    [string]$OutputDirectory = (Join-Path $env:SystemDrive "Exports")
)
Import-Module ActiveDirectory -ErrorAction Stop
if (-not (Test-Path $OutputDirectory)) {
    New-Item -Path $OutputDirectory -ItemType Directory -Force | Out-Null
}
$OutputCsv = Join-Path $OutputDirectory ("AD_Users_{0}.csv" -f (Get-Date -Format "yyyyMMdd_HHmm"))
$params = @{
    Filter = '*'
    Properties = @('DisplayName','UserPrincipalName','Enabled','Department','Title','Mail','LastLogonDate','WhenCreated')
}
if ($SearchBase) {
    $params.SearchBase = $SearchBase
    $params.SearchScope = 'Subtree'
}
$Users = Get-ADUser @params | Select-Object SamAccountName,DisplayName,UserPrincipalName,Enabled,Department,Title,Mail,LastLogonDate,WhenCreated
$Users | Export-Csv -Path $OutputCsv -NoTypeInformation -Encoding UTF8
Write-Host "Aktarılan kullanıcı: $(@($Users).Count)"
Write-Host "CSV: $OutputCsv"

Doğrulama

Ben export işleminden sonra yalnız dosyanın oluşmasına bakmam. AD sorgusundaki nesne sayısı ile CSV çıktısının beklenen kapsamı temsil ettiğini, sütunların doğru geldiğini ve OU filtresinin yanlış kapsamı çekmediğini kontrol ederim.

$Users.Count
Test-Path $OutputCsv
Import-Csv $OutputCsv | Select-Object -First 5

Sık Karşılaşılan Sorunlar

ActiveDirectory modülü bulunamıyor

RSAT/Active Directory PowerShell bileşenini Get-Module -ListAvailable ActiveDirectory ile doğrulayın.

SearchBase geçersiz

OU’nun Distinguished Name değerini doğrulayın. Yanlış DN sorgunun başarısız olmasına veya yanlış kapsam üretmesine neden olabilir.

CSV’de gereksiz sütunlar var

-Properties * yerine yalnız raporda kullanılacak attribute’ları isteyin ve Select-Object ile çıktı şemasını belirleyin.

Güvenlik ve Best Practice

  • Export için Domain Admin gibi yüksek yetkili hesap kullanmayın; gerekli okuma yetkisi yeterlidir.
  • CSV’nin kurumsal kullanıcı verileri içerebileceğini dikkate alın.
  • Raporları erişimi kontrollü konumda saklayın.
  • Büyük yapılarda sorguyu OU ve gerekli attribute’larla sınırlandırın.

İlgili Rehberler

Kullanıcı raporuna ek olarak AD gruplarını ve bilgisayar envanterini CSV dosyasına aktarmak için PowerShell ile AD Kullanıcı ve Bilgisayarları Dışa Aktarma Komutları rehberine geçebilirsiniz.

OU bazında kullanıcı ve bilgisayar sayılarını raporlamak için OU Bazlı Kullanıcı ve Bilgisayar Sayımı rehberine; cmdlet ve pipeline örnekleri için PowerShell Komutları merkezine geçebilirsiniz.

Sonuç

Get-ADUser, Select-Object ve Export-Csv birlikte kullanıldığında Active Directory kullanıcı raporlarını tekrarlanabilir bir operasyona dönüştürür. Sağlıklı yaklaşım, tüm attribute’ları toplamak yerine raporun amacına uygun alanları ve arama kapsamını açıkça tanımlamaktır.

PROFESYONEL PROFİL

Bu teknik içeriğin arkasındaki deneyimi inceleyin.

Microsoft altyapıları, Active Directory, SCCM, PowerShell, Windows Server ve VMware odaklı teknik profil ve proje çalışmaları.

Projeler & Vaka Çalışmalarıİngilizce Profil

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir