Get-ADUser: PowerShell üzerinden Active Directory kullanıcı verilerini alma


Bu yazıda basit örnekleri kullanarak, Active Directory etki alanındaki belirli kullanıcı nesnelerini aramak ve AD kullanıcıları ve özellikleri hakkında farklı bilgiler almak için Get-ADuser cmdlet’inin PowerShell özelliklerini göstereceğiz.

Active Directory etki alanı kullanıcıları ve özellikleri hakkında bilgi almak için Get-ADUser cmdlet’i kullanabiliriz. Get-ADUser cmdlet’ini kullanarak, AD’deki mevcut bir kullanıcı hesabının herhangi bir özelliğinin değerini alabilirsiniz . Ayrıca, farklı filtreleme ölçütleri belirtebilir ve etki alanı kullanıcılarının ve attribut’lerin listesini oluşturabilirsiniz.

Bu örnekte, Get-ADUser PowerShell cmdlet’ini keullanarak kullanıcının şifresinin ne zaman değiştirildiğini ve şifrenin son kullanma tarihi hakkında bilgi almayı göstereceğiz.

PowerShell’i yönetici ayrıcalıklarıyla çalıştırın ve Active Directory Modülünü aşağıdaki komutla içe aktarın.

Import-Module activedirectory

Not→ Windows Server 2012’de, PowerShell Active Directory Modülü varsayılan olarak etkinleştirildiğinden bu adım atlanabilir.

Get-AdUser cmdlet’ini kullanabilmek için Windows 10 veya Windows 7’de, RSAT’ın uygun sürümünü yüklemeniz ve Denetim Masası’ndaki Active Directory Module for Windows PowerShell’i etkinleştirmeniz gerekir.

Get-ADUser cmdlet’inin tüm argümanlarının tam listesi aşağıdaki gibi elde edilebilir.

help Get-ADUser

Tüm etki alanı hesaplarının listesini görüntülemek için şu komutu çalıştırın.

Get-ADUser -filter *

Önemli→ Bu komutu, çok sayıda hesaba sahip etki alanlarında çalıştırmak tavsiye edilmez. Domain controller sunucusuna aşırı yük binebilir.

Komut çıktısında, kullanıcı hesaplarına ait (DN, SamAccountName, Name, SID , UPN, vb.) 120’den fazla attribute’nin yalnızca temel 10 tanesi görüntülenir. Ayrıca, son şifre değişikliğinin zamanı hakkındaki bilgilerin olmadığını da görüyoruz.

Kullanılabilir tüm kullanıcı özellikleriyle ilgili ayrıntılı bilgileri görüntülemek için şu komutu çalıştırın.

Get-ADUser -identity testuser -properties *

Belirli attribute’lerle ilgileniyorsanız eğer bu kadar bilgi işinize yaramayabilir. Sadece ilgilendiğiniz bilgilere ulaşmak için listeyi biraz daraltalım. Aşağıdaki attribute’lere ait bilgileri görüntülemek istiyoruz.

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires

Komutumuz şöyle olmalı.

Get-ADUser testuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires

Şimdi elimizde kullanıcı verisinde son şifre değişikliğinin tarihi ve son kullanma tarihi ile ilgili bilgiler var. Bu bilgiyi daha kullanışlı bir tablo görünümüne getirebiliriz.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Belirli bir OU’da ki kullanıcıların verilerini görüntülemek için SearchBase anahtarını kullanabiliriz.

Get-ADUser -SearchBase ‘OU=Ankara,DC=contoso,DC=com’ -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Çıkan sonuç bir metin dosyasına aktarılabilir.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Belirli bir özelliğe sahip AD kullanıcı hesaplarının bir listesini almak için -Filter parametresini kullanabilirsiniz. Bu parametrenin argümanları olarak, Active Directory kullanıcılarının belirli attribute’lere ait değer belirtebilirsiniz.

Farklı filtreler kullanarak birkaç yararlı Directory sorgu seçenekleri aşağıda görebilirsiniz.

Adı Ahmet ile başlayan AD kullanıcılarını görüntüleme.

Get-ADUser -filter {name -like “Ahmet*”}

Tüm Active Directory hesaplarının toplam sayısını hesaplamak için.

Get-ADUser -Filter {SamAccountName -like “*”} | Measure-Object

Tüm aktif (engellenmemiş) AD hesaplarının listesi.

Get-ADUser -Filter {Enabled -eq “True”} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table

Şifre süresi dolan hesapların listesi.

Get-ADUser -filter {Enabled -eq $True} -properties passwordExpired | where {$_.PasswordExpired}

E-posta adresleri olan aktif hesapların listesi.

Get-ADUser -Filter {(mail -ne “null”) -and (Enabled -eq “true”)} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table

Görev: bir metin dosyasında bulunan hesapların listesi için kullanıcının şirket adını AD’den almanız ve bir metin csv dosyasına kaydetmeniz gerekir.

Import-Csv c:\ps\users_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, Company |
Select Name, Company |
Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}

Bir sonraki örnek, şirketin adres defterinin daha sonra Outlook veya Mozilla Thunderbird gibi e-posta istemcilerine içe aktarılabilen bir CSV dosyasına aktarılmasını sağlar.

Get-ADUser -Filter {(mail -ne “null”) -and (Enabled -eq “true”)} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter “,” $env:temp\adress_list.csv

Son 90 günde şifrelerini değiştirmeyen kullanıcılar.

$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}

Bir kullanıcının fotoğrafını Active Directory’den almak ve fotoğrafı bir dosyaya kaydetmek için aşağıdaki komutları çalıştırabilirsiniz.

$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte

Kullanıcı hesabının üyesi olduğu AD gruplarının bir listesini almak için.

Get-AdUser sjoe -Properties memberof | Select memberof -expandproperty memberof

KAYNAKPOWERSHELL