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

3 Min Read
Powershell ile Active Directory

Neden CSV’ye Aktarma?

Powershell ile Active Directory kullanıcı verilerini CSV’ye almak; envanter, raporlama, lisanslama ve denetim (audit) süreçlerinde standart, taşınabilir bir çıktı sağlar.

Ön Koşullar

  • Windows’ta RSAT kurulu olmalı ve Active Directory modülü mevcut olmalı.

  • AD üzerinde okuma yetkisi (en azından ilgili OU için).

  • PowerShell 5.1+ (veya PowerShell 7 + uygun modül).

  • Gerekirse çalıştırma politikası:

    Set-ExecutionPolicy RemoteSigned

 Adım Adım Anlatım

1) AD Modülünü Yükleyin

Import-Module ActiveDirectory

2) Çıktı Yolunu Belirleyin

$OutputCsv = "C:\Exports\AD_Users_$(Get-Date -Format yyyyMMdd).csv"

3) (Opsiyonel) OU Bazında Filtreleyin

Belirli bir OU’dan çekmek istiyorsanız DN (Distinguished Name) kullanın:

$SearchBase = "OU=Istanbul,OU=Users,DC=contoso,DC=com" # örnek

4) İstediğiniz Alanları Seçin

Raporunuza girecek sütunları planlayın (örn. UPN, DisplayName, Department, Title, Enabled, LastLogonDate, WhenCreated, Mail, Phone).

5) Script’i Çalıştırın ve CSV’yi Kontrol Edin

Script tamamlandığında $OutputCsv yolunda dosya oluşur. Excel ile açabilirsiniz.

Örnek PowerShell ile Active Directory Script’i

<#
.SYNOPSIS
AD kullanıcılarını seçili alanlarla CSV'ye aktarır.
.DESCRIPTION
OU filtreleme, özel alan seçimi, hata yönetimi ve basit loglama içerir.
.PARAMETER SearchBase
(Opsiyonel) Belirli bir OU DN'i. Boşsa tüm etki alanında arar.
.PARAMETER OutputCsv
Çıktı dosyasının yolu.
.EXAMPLE
.\Export-ADUsers.ps1 -SearchBase "OU=Istanbul,OU=Users,DC=contoso,DC=com" -OutputCsv "C:\Exports\users.csv"
#>

[CmdletBinding()]
param(
[string]$SearchBase,
[Parameter(Mandatory=$false)]
[string]$OutputCsv = "C:\Exports\AD_Users_{0}.csv" -f (Get-Date -Format 'yyyyMMdd_HHmm')
)

try {
# Modül kontrolü
if (-not (Get-Module -ListAvailable -Name ActiveDirectory)) {
throw "ActiveDirectory modülü bulunamadı. RSAT kurulumunu doğrulayın."
}
Import-Module ActiveDirectory -ErrorAction Stop

# Sorgu alanları
$props = @(
'SamAccountName','UserPrincipalName','DisplayName','GivenName','Surname',
'Enabled','Department','Title','telephoneNumber','mail','whenCreated','lastLogonDate'
)

# Filtre ve arama kapsamı
$commonParams = @{
Filter = '*'
Properties = $props
}
if ($SearchBase) { $commonParams.SearchBase = $SearchBase }

Write-Host "Kullanıcılar çekiliyor..."
$users = Get-ADUser @commonParams | Sort-Object -Property DisplayName

# Dışa aktarılacak sütunları seç
$export = $users | Select-Object @{
Name='UserName'; Expression={$_.SamAccountName}
}, @{
Name='UPN'; Expression={$_.UserPrincipalName}
}, @{
Name='DisplayName'; Expression={$_.DisplayName}
}, @{
Name='FirstName'; Expression={$_.GivenName}
}, @{
Name='LastName'; Expression={$_.Surname}
}, @{
Name='Department'; Expression={$_.Department}
}, @{
Name='Title'; Expression={$_.Title}
}, @{
Name='Phone'; Expression={$_.telephoneNumber}
}, @{
Name='Email'; Expression={$_.mail}
}, @{
Name='Enabled'; Expression={$_.Enabled}
}, @{
Name='Created'; Expression={$_.whenCreated}
}, @{
Name='LastLogonDate'; Expression={$_.lastLogonDate}
}




# Klasör yoksa oluştur
$dir = Split-Path -Path $OutputCsv -Parent
if (-not (Test-Path $dir)) { New-Item -Path $dir -ItemType Directory -Force | Out-Null }

# CSV'ye yaz
$export | Export-Csv -Path $OutputCsv -NoTypeInformation -Encoding UTF8

Write-Host "Toplam kullanıcı: $($users.Count)"
Write-Host "CSV oluşturuldu: $OutputCsv"
}
catch {
Write-Warning ("Hata: " + $_.Exception.Message)
throw
}

Alternatif: LDAP Filtresi ile Hassas Arama

Örneğin sadece etkin kullanıcılar:

Get-ADUser -LDAPFilter "(&(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))" -Properties mail

 Örnek CSV Çıktısı

UserName,UPN,DisplayName,FirstName,LastName,Department,Title,Phone,Email,Enabled,Created,LastLogonDate
jdoe,jdoe@contoso.com,John Doe,John,Doe,IT,System Administrator,+90 212 000 00 00,jdoe@contoso.com,True,2021-05-12,2025-10-20
asmith,asmith@contoso.com,Ayşe Smith,Ayşe,Smith,Finance,Accountant,+90 212 111 11 11,asmith@contoso.com,True,2023-02-03,2025-10-22

Not: Tarih formatları bölgesel ayarlara göre değişebilir. Excel içe aktarımında “Veri → Metinden/CSV” ile sütun türlerini belirlemen önerilir.

Bu makaleyi paylaş
Takip et:
Tolga CEYHAN, bilgi teknolojilerini severek takip eder ve BT üzerine hali hazırda aktif olarak çalışmaktadır. 2006 yılından 2017 yılına kadar web tasarım yazılım üzerine çalışmalar yaptım. Şuan ise Windows Sistem ve Sistem Güvenliği alanında çalışmalarımı sürdürmekteyim.
Yorum Yap

Bir yanıt yazın

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

Exit mobile version