Follow

PowerShell ile Active Directory’den Kullanıcı ve Bilgisayar Verilerini Dışa Aktarma: Pratik Komutlar ve Mini Tüyolar

Active Directory’deki kullanıcı ve bilgisayar bilgilerini PowerShell ile hızlıca CSV’ye aktarmanın yollarını, sık kullanılan filtreleri ve zaman kazandıran mini tüyoları bir arada topladım.
PowerShell ile AD'den Kullanıcı ve Bilgisayar Verilerini Dışa Aktarma Canva kapak görseli

AD’den “şu bilgileri bana bir Excel’e döker misin?” talebi, BT’de neredeyse her hafta karşılaşılan bir istek. Bu yazıda, kullanıcı ve bilgisayar verilerini PowerShell ile hızlıca dışa aktarmanın pratik yollarını, en sık işime yarayan filtrelerle birlikte derledim.

Başlamadan Önce: Modülü Yükleme

Import-Module ActiveDirectory

Mini tüyo: Modül bulunamıyorsa, RSAT (Remote Server Administration Tools) kurulu olmayabilir. Windows 10/11’de Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 ile kurabilirsiniz.

1. Kullanıcı Bilgilerini Çekmek

Temel Kullanıcı Listesi

Get-ADUser -Filter * -Properties DisplayName, EmailAddress, Department, Title |
    Select-Object Name, DisplayName, EmailAddress, Department, Title |
    Export-Csv -Path "C:\Raporlar\tum_kullanicilar.csv" -NoTypeInformation -Encoding UTF8

Mini tüyo: -Encoding UTF8 parametresini unutmayın — aksi halde Türkçe karakterler (ı, ş, ğ, ü, ö, ç) Excel’de bozuk görünür.

Sadece Aktif (Enabled) Kullanıcılar

Get-ADUser -Filter {Enabled -eq $true} -Properties DisplayName, EmailAddress, LastLogonDate |
    Select-Object Name, EmailAddress, LastLogonDate |
    Export-Csv -Path "C:\Raporlar\aktif_kullanicilar.csv" -NoTypeInformation -Encoding UTF8

Belirli Bir OU’daki (Departman) Kullanıcılar

Get-ADUser -Filter * -SearchBase "OU=Muhasebe,OU=Kullanicilar,DC=sirket,DC=local" -Properties EmailAddress |
    Select-Object Name, EmailAddress |
    Export-Csv -Path "C:\Raporlar\muhasebe_kullanicilari.csv" -NoTypeInformation -Encoding UTF8

Mini tüyo: OU yolunu (DistinguishedName) bilmiyorsanız, Get-ADOrganizationalUnit -Filter * | Select Name, DistinguishedName ile tüm OU’ları listeleyip kopyalayabilirsiniz.

Belirli Bir Gruba Üye Olan Kullanıcılar

Get-ADGroupMember -Identity "GRP-Muhasebe" |
    Get-ADUser -Properties EmailAddress, Title |
    Select-Object Name, EmailAddress, Title |
    Export-Csv -Path "C:\Raporlar\grup_uyeleri.csv" -NoTypeInformation -Encoding UTF8

Şifresi Yakında Dolacak Kullanıcılar

Get-ADUser -Filter {Enabled -eq $true} -Properties DisplayName, "msDS-UserPasswordExpiryTimeComputed" |
    Select-Object Name, @{N='ParolaBitis';E={[datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}} |
    Where-Object {$_.ParolaBitis -lt (Get-Date).AddDays(14)} |
    Export-Csv -Path "C:\Raporlar\parola_bitecekler.csv" -NoTypeInformation -Encoding UTF8

2. Bilgisayar (Computer) Bilgilerini Çekmek

Temel Bilgisayar Listesi

Get-ADComputer -Filter * -Properties OperatingSystem, OperatingSystemVersion, LastLogonDate |
    Select-Object Name, OperatingSystem, OperatingSystemVersion, LastLogonDate |
    Export-Csv -Path "C:\Raporlar\tum_bilgisayarlar.csv" -NoTypeInformation -Encoding UTF8

Sadece Sunucular

Get-ADComputer -Filter {OperatingSystem -like "*Server*"} -Properties OperatingSystem, IPv4Address |
    Select-Object Name, OperatingSystem, IPv4Address |
    Export-Csv -Path "C:\Raporlar\sunucular.csv" -NoTypeInformation -Encoding UTF8

90 Gündür “Görünmeyen” (İnaktif) Bilgisayarlar

Bu, AD hijyeni için en çok kullandığım sorgulardan biri — eski/kullanılmayan bilgisayar hesaplarını temizlemenin ilk adımı:

Get-ADComputer -Filter * -Properties LastLogonDate, OperatingSystem |
    Where-Object {$_.LastLogonDate -lt (Get-Date).AddDays(-90)} |
    Select-Object Name, OperatingSystem, LastLogonDate |
    Sort-Object LastLogonDate |
    Export-Csv -Path "C:\Raporlar\inaktif_bilgisayarlar.csv" -NoTypeInformation -Encoding UTF8

Belirli Bir Windows Sürümündeki Cihazlar

Örneğin, hâlâ Windows 10 çalıştıran cihazları bulup Windows 11 geçiş planlaması yapmak için:

Get-ADComputer -Filter {OperatingSystem -like "*Windows 10*"} -Properties OperatingSystem |
    Select-Object Name, OperatingSystem |
    Export-Csv -Path "C:\Raporlar\windows10_cihazlar.csv" -NoTypeInformation -Encoding UTF8

3. Zaman Kazandıran Mini Tüyolar

Tüyo 1: GridView ile Anında Önizleme

CSV’ye kaydetmeden önce sonucu hızlıca görmek isterseniz, Export-Csv yerine Out-GridView kullanın — filtrelenebilir, sıralanabilir bir pencere açar:

Get-ADUser -Filter * -Properties Department | Select Name, Department | Out-GridView

Tüyo 2: Tarih Damgalı Dosya Adı

Raporları düzenli çalıştırıyorsanız, dosya adına otomatik tarih eklemek karışıklığı önler:

$tarih = Get-Date -Format "yyyy-MM-dd"
Get-ADUser -Filter * | Export-Csv -Path "C:\Raporlar\kullanicilar_$tarih.csv" -NoTypeInformation -Encoding UTF8

Tüyo 3: Belirli Özellikleri Tek Seferde Keşfetmek

Bir kullanıcı/bilgisayar nesnesinde hangi özelliklerin (attribute) mevcut olduğunu bilmiyorsanız:

Get-ADUser -Identity "ornek.kullanici" -Properties * | Get-Member -MemberType Property | Select Name

Bu komut, o nesnede sorgulanabilecek tüm özellik adlarını listeler — “acaba bu bilgiye nasıl ulaşırım” sorusuna hızlı cevap.

Tüyo 4: Excel’de Doğrudan Açılabilir Format

Export-Csv varsayılan olarak virgülle ayrılmış dosya üretir; Türkçe Excel kurulumlarında bazen noktalı virgül (;) beklenir. Sorun yaşarsanız -Delimiter ";" parametresini ekleyin:

Get-ADUser -Filter * | Export-Csv -Path "rapor.csv" -NoTypeInformation -Encoding UTF8 -Delimiter ";"

Tüyo 5: Birden Fazla Sorguyu Tek Dosyada Birleştirmek

Kullanıcı ve yöneticisini aynı satırda görmek gibi ilişkisel bilgi gerektiğinde:

Get-ADUser -Filter * -Properties Manager, EmailAddress | ForEach-Object {
    [PSCustomObject]@{
        Kullanici = $_.Name
        Email = $_.EmailAddress
        Yonetici = if ($_.Manager) { (Get-ADUser $_.Manager).Name } else { "Tanımsız" }
    }
} | Export-Csv -Path "C:\Raporlar\kullanici_yonetici.csv" -NoTypeInformation -Encoding UTF8

Bir talep geldiğinde komutu sıfırdan yazmak yerine, kendinize ait bir “script kütüphanesi” klasöründen hazır olanı çalıştırmak hem hız hem de tutarlılık kazandırıyor — bu yüzden yukarıdaki komutları tek tek ezberlemek yerine, bir .ps1 dosyasında biriktirmenizi öneririm.

Comments
Join the Discussion and Share Your Opinion
Add a Comment

Bir yanıt yazın

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


Newsletter
Join Design Community
Get the latest updates, creative tips, and exclusive resources straight to your inbox. Let’s explore the future of design and innovation together.