Get-ADUser Powershell Cmdlet'i aracılığıyla Kullanıcı Yönetimi


giriiş

PowerShell'deki Get-ADUser cmdlet'i, Active Directory (AD) etki alanında bir veya daha fazla kullanıcı bulmak için birçok parametre sağlar.

Varsayılan olarak PowerShell, makinede oturum açan hesabı kullanarak çalışır. Farklı bir hesap kullanarak bir komut çalıştırmak istiyorsanız komutunuzdan önce bu anahtarı kullanarak PowerShell'i sizden kimlik bilgilerini istemeye zorlayabilirsiniz:

$cred =Get-Credential

Belirli bir Kullanıcıyı Arama

-Kimlik Parametresi

Hangi AD kullanıcısını almak istediğinizi biliyorsanız -Identity parametresini kullanın:

Get-ADUser -Identity “identifier”

Tanımlayıcı için aşağıdakilerden birini belirtin:

  • Ayırt Edici İsim (DN)
  • SamHesapAdı
  • GUID
  • SID

Örnek

Get-ADUser -Identity "ABBEY.Crawford"

Aramayı Belirli Bir Kuruluş Birimiyle Sınırlama

-Arama Tabanı Parametresi

Aramayı ayırt edici adı (DN) ile belirtilen belirli bir kuruluş birimiyle sınırlamak için -SearchBase parametresini kullanın:

Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "distinguishedName of OU"

Örnek

Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local"

-Arama Kapsamı Parametresi

Aramayı belirli bir kuruluş birimiyle ve belirli sayıda alt kuruluş düzeyiyle sınırlamak için SearchBase ve SearchScope parametrelerini birleştirin. Örneğin, bir kuruluş birimindeki ve onun doğrudan alt kuruluş birimlerindeki kullanıcı hesaplarını bulmak için SearchScope için 1 değerini belirtin. Hem alt hem de torun kuruluş birimlerini dahil etmek için 2 değerini kullanın.

Get-ADUser -SearchBase " distinguishedName of OU " -SearchScope "2"

Örnek

Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local" -SearchScope "2"

Belirli Kullanıcı Gruplarına Göre Filtreleme

-Filtre Parametresi

Herhangi bir tanımlayıcının tam değerini bilmiyorsanız, filtrelenecek bir özelliği ve filtre için bir değeri aşağıdaki gibi belirtebilirsiniz:

Get-ADUser -Filter “filter value”

Operatörler

OperatorMeaningSample expression
-eqEqual toName -like ‘Inga’
-neNot equal toCountry -ne ‘US’
-gtGreater thanBadLogonCount -gt ‘0’
-geGreater than or equalModified -ge ’06-04-2021 12:00:00?
-ltLess thanLastLogonTimeStamp -lt ’01-08-2020?
-leLess than or equalCreated -le ’01-08-2020?
-likeWildcard searchMail -like ‘*@xyz.com’
-notlikeWildcard search with negationDepartment -notlike ‘*’
-andAndCountry -eq ‘US’ -and Department -eq ‘Operations’
-orOrCountry -eq ‘US’ -or -Country -eq ‘UK’

Belirli Bir Ada Sahip Kullanıcıları Bulma

Bir kullanıcıyı kendi adı veya adının bir kısmı ile aramak için -Filter parametresini -like cümleciği ve bir değerle birlikte kullanın.

Aşağıdaki örnekte, GivenName AD özniteliğini içeren Filter parametresinin kullanımı gösterilmektedir. VerilenAdı Abbey'i içeren kullanıcıları döndürür.

Get-ADUser -Filter “givenname -Like ‘Abbey’”

Benzer İsimlere Sahip Kullanıcıları Bulma

Adı belirli bir dizeyle başlayan tüm kullanıcıları elde etmek için joker karakter operatörünü kullanarak önceki komutu aşağıdaki gibi değiştirebilirsiniz:

Get-ADUser -Filter "Name -like 'Abb*'" | Select Name,givenname,surname,samAccountName,distinguishedname | ftG

Tüm Etkin Kullanıcıları Bulma

Tüm etkin kullanıcıları görmek istiyorsanız bu cmdlet'i kullanabilirsiniz:

Get-ADUser -filter {Enabled -eq "true"} | ft

Engelli Kullanıcıları Bulma

Engelli kullanıcıları bulmak, AD temizliğini kolaylaştırmak açısından oldukça değerli olabilir. Bazı şirketler Active Directory nesnelerini denetim amacıyla saklamayı tercih ettiğinden, tek bir filtreyle basit bir komut kullanan "-Filter "Enabled -eq 'false'", yüzlerce devre dışı kullanıcıyı döndürebilir. Sonuçları sınırlamak için -SearchBase filtresini belirli bir kuruluş birimiyle kullanın. Örneğin, bu cmdlet belirli bir kuruluş birimindeki tüm devre dışı bırakılmış kullanıcı hesaplarını bulacaktır:

Get-ADUser -Filter “Enabled -eq 'false'” -SearchBase "CN=Users,DC=Knox,DC=lab" -Properties * | Select Name,Enabled |ft

E-posta Adresi Olan Kullanıcıları Bulma

Kendilerine atanmış posta kutusu olan tüm kullanıcıları bulmak için aşağıdaki komutu kullanın:

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail

Şifre Son Kullanma Tarihi Ayarlanmamış Hesapları Bulma

Güvenliği güçlendirmek için, 'passwordneverexpires' özelliği true olarak ayarlanmış tüm hesapları aşağıdaki gibi bulmak isteyebilirsiniz:

Get-ADUser -Filter {passwordneverexpires -eq "true"} | Select Name, sAMAccountName

Eski Kullanıcı Hesaplarını Bulma

Bazen bir süredir kullanılmayan kullanıcı hesaplarını filtrelememiz gerekebilir. Son 60 gün içinde kullanılmayan tüm kullanıcı hesaplarını şu şekilde bulabilirsiniz:

$CutoffDate = (Get-Date).AddDays(-60)
Get-ADUser -Filter "LastLogonDate -lt '$CutoffDate'" -Properties LastLogonDate | Select Name, LastLogonDate

Belirli Bir Tarihte Oluşturulan Kullanıcıları Bulma

Active Directory'de belirli bir tarihte oluşturulan tüm kullanıcı hesaplarını görmek için bu komutu kullanabilirsiniz:

Get-ADUser -Filter {Created -lt '7/30/2021'} | Select Name

Birden Çok Filtreyi Birleştirme

Kullanıcıları bulmaya yönelik karmaşık kriterleri tanımlamak için birden fazla filtreyi birleştirebilirsiniz.

örnek 1

Aşağıdaki komut, Satış departmanındaki tüm etkin kullanıcıları döndürecektir:

Get-ADUser -Filter "Enabled -eq 'true' -and Department -like 'Sales'" -Properties * | Select Name, Department |ft

Örnek 2

Aşağıdaki cmdlet, departman özniteliği null olmayan ve adı A harfiyle başlayan tüm kullanıcıları döndürecektir:

Get-ADUser -filter {Department -ne "null"} | Where-Object Name -like 'A*'

Hangi Özelliklerin Görüntülendiğini Kontrol Etme

-Özellikler Parametresi

Varsayılan olarak Get-ADUser komutu yalnızca bir avuç parametre döndürür. Bir kullanıcının özelliklerinin genişletilmiş listesini istiyorsanız bu cmdlet'i kullanın:

Get-ADUser -Identity “Identifier” -Properties *

Belirli Bir Özellikler Grubunu Görüntüleme

Alternatif olarak, bir kullanıcı için görmek istediğiniz özellikleri açıkça listeleyebilirsiniz:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,Enabled,mail,department,company,title,c,st,streetaddress |ft

Grup Üyeliğini Görüntüleme

Bir kullanıcının üyeliğini görmek için bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.crawford -Properties memberof | Select-Object -ExpandProperty memberof

E-posta Adresini Görüntüleme

Belirli bir kullanıcının e-posta adresini görmek istiyorsanız bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,mail |ft

Kullanıcı Asıl Adını (UPN) Görüntüleme

Bir kullanıcının UPN'sini almak için bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,userprincipalname |ft

SAM Hesap Adını Görüntüleme

Bir kullanıcının SAM hesap adını görüntülemek için bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,samAccountName |ft

Görünen Ad Görüntüleniyor

Bir kullanıcının görünen adını görmek istiyorsanız (örneğin, ADUC'ta farklı olabileceğinden), bu cmdlet'i kullanabilirsiniz:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,displayname |ft

Ayırt Edici Ad Görüntüleniyor

Bir kullanıcının ayırt edici adını görmek için bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,distinguishedname |ft

Proxy Adreslerini Görüntüleme

Bir kullanıcının proxy adreslerini görmek istiyorsanız bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,proxyaddresses |ft

Kullanıcı Yöneticisini Görüntüleme

Bir kullanıcının yöneticisinin SAM hesap adını göstermek için bu komutu kullanın:

Get-ADUser “User Identifier” -properties * | select  amAccountName, @{Name=’Manager’;Expression={(Get-ADUser($_.manager)).samaccountname}}

Çalışan Kimliğini Görüntüleme

Bir kullanıcının çalışan kimliğini görmek için bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,employeeid |ft

Telefon Numaralarını Görüntüleme

Bir kullanıcının tüm telefon numaralarını bulmak için şu komutu kullanın:

Get-ADUser -Identity “User Identifier” -Properties * | Select *Phone*

Bu değerleri tablo biçiminde görüntülemek için şu komutu kullanın:

Get-ADUser -Identity “User Identifier” -Properties * | Select Name, *Phone* | ft

Şifre Son Kullanma Tarihini ve Saatini Görüntüleme

Bir hesabın parola son kullanma tarihini görmek için bu cmdlet'i kullanın:

Get-ADUser -Identity “User Identifier” -Properties msDS-UserPasswordExpiryTimeComputed | select Name, {[datetime]::FromFileTime($_.”msDS-UserPasswordExpiryTimeComputed”)}

Hesap Oluşturma Tarihini Görüntüleme

AD'de bir kullanıcı hesabının ne zaman oluşturulduğunu görmek için şu komutu kullanın:

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated

Son Oturum Açma Tarihini ve Saatini Görüntüleme

Bir kullanıcının herhangi bir sistemde en son ne zaman oturum açtığını görmek istiyorsanız bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,lastlogondate |ft

Son Şifre Değiştirme Tarihi ve Saatinin Görüntülenmesi

Bir kullanıcının şifresini en son ne zaman değiştirdiğini görmek için bu cmdlet'i kullanın:

Get-ADUser -Identity Abbey.Crawford -properties PwdLastSet,PasswordLastSet  | sort Name | ft Name,PwdLastSet,PasswordLastSet

Uzantı Niteliklerinin Değerlerini Görüntüleme

Kuruluşlar, kullanıcılar hakkında ek bilgi depolamak için AD uzantısı niteliklerini kullanabilir. Örneğin, O365 lisans bilgileri ExtensionAttribute1'de saklanabilir. Bu bilgiyi görmek için bu cmdlet'i kullanın:

Get-ADUser -Identity “Abbey.Crawford” -Properties * | Select sAMAccountName, extensionAttribute1

Çıktıyı Sıralama

Get-ADUser komutunun çıktısını belirli bir özelliği kullanarak sıralamak için aşağıdaki komutu kullanın:

Get-ADUser -Filter * | Select Name | Sort-Object -Property Name

Verileri CSV Dosyasına Aktarma

Örnek 1

Aşağıdaki komut, son 180 gün içinde oluşturulan tüm kullanıcı hesaplarını bulacak, bunları ada göre sıralayacak ve bunlar hakkında seçilen bilgileri bir CSV dosyasına aktaracaktır:

Get-ADUser -filter * -properties * | Where-Object { $_.created -gt  (get-date).AddDays(-180)} | select-object Name, Created | sort Name | export-csv C:\Accounts.csv -NoTypeInformation

Örnek 2

Aşağıdaki komut, belirli bir kuruluş birimindeki tüm kullanıcıları bulur ve onlar hakkında seçilen ayrıntıları bir CSV dosyasına çıkarır:

İşte CSV dosyası:

Çözüm

Get-ADUser komutu, belirli kriterleri karşılayan bir veya daha fazla kullanıcıyı bulmanın çok yönlü bir yoludur. Hangi kullanıcı özelliklerinin görüntüleneceğini ve bilgilerin nasıl sıralanacağını kontrol edebilir ve çıktıyı bir CSV dosyasına aktarabilirsiniz.

Daha kapsamlı bir Active Directory ve Azure AD yönetim çözümüyle ilgileniyorsanız Netwrix GroupID'ye göz atın. PowerShell ile de tam uyumlu, daha gelişmiş bir yönetim kabuğu sunar.

İlgili makaleler