Get-ADUser: PowerShell ile Aktif Dizin Kullanıcı Bilgilerini Bulun
Get-ADUser PowerShell cmdlet'i, bir Active Directory kullanıcısı ve öznitelikleri hakkında bilgi almanıza ve etki alanı kullanıcıları arasında arama yapmanıza olanak tanır. AD'den bilgi almak için en popüler PowerShell cmdlet'lerinden biridir. Get-ADUser cmdlet'ini kullanarak, bir AD kullanıcı hesabının herhangi bir özniteliğinin değerini alabilir, etki alanı kullanıcılarını özniteliklerle listeleyebilir, kullanıcı raporlarını CSV dosyalarına aktarabilir ve etki alanı kullanıcılarını seçmek ve filtrelemek için çeşitli ölçütler kullanabilirsiniz.
Active Directory PowerShell Modülünde Get-ADUser Cmdlet
Bu
Get-ADUsercmdlet, Active Directory ile etkileşim için özel bir modüle dahil edilmiştir - Windows PowerShell için Active Directory Modülü. RSAT-AD-PowerShell modülü cmdlet'leri, AD nesneleri üzerinde çeşitli işlemler gerçekleştirmenizi sağlar.
Not. Önceden, AD kullanıcı hesaplarının öznitelikleri hakkında bilgi almak için farklı araçlar kullanmanız gerekiyordu: ADUC konsolu (kaydedilmiş AD sorguları dahil), VBS betikleri, dsquery, vb. Bu araçların tümü Get-ADUser cmdlet'i ile kolayca değiştirilebilir .
Bu örnekte, bir kullanıcının parolasının en son ne zaman değiştirildiği, parolanın süresinin ne zaman dolacağı ve diğer kullanıcıların özellikleri hakkında bilgi almak için Get-ADUser PowerShell cmdlet'inin nasıl kullanılacağını göstereceğiz.
RSAT-AD-PowerShell modülünü kullanmak için yükseltilmiş PowerShell konsolunu çalıştırmanız ve şu komutla modülü içe aktarmanız gerekir:
Import-Module ActiveDirectoryRSAT-AD-PowerShell modülü, Active Directory Etki Alanı Hizmetleri (AD DS) rolünü dağıttığınızda Windows Server 2012'de (ve daha yenisinde) varsayılan olarak yüklenir. Modülü bir etki alanı üyesi Windows Server ana bilgisayarına yüklemek için şu komutu çalıştırın:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeatureGet-ADUser cmdlet'ini masaüstü Windows 10/11'de kullanmak için uygun RSAT sürümünü yüklemeniz gerekir. RSAT'ı Ayarlar -> Uygulamalar -> İsteğe Bağlı Özellikler -> Bir özellik ekle -> aracılığıyla etkinleştirebilirsiniz. >RSAT: Active Directory Etki Alanı Hizmetleri ve Basit Dizin Hizmetleri Araçları.
RSAT AD modülünü PowerShell ile Windows 10 ve 11'e kurabilirsiniz:
Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"RSAT-AD-PowerShell modülü bilgisayarda kurulu değilse, Get-ADUser komutunu çalıştırdığınızda bir hata görünecektir:
Get-ADUser: The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.Modülün kurulu olduğunu kontrol edin ve gerekirse PowerShell oturumunuza aktarın:
Import-Module ActiveDirectoryAD-PowerShell modülünü bilgisayarınıza RSAT yüklemeden kullanmanın da bir yolu vardır. Ana modül dosyalarını kopyalayıp modülü PowerShell oturumuna aktarmanız yeterlidir:
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.resources.dll"Get-ADUser cmdlet'inin tüm argümanlarının tam listesi aşağıdaki gibi elde edilebilir:
help Get-ADUserGet-ADUser ile AD Kullanıcısı ve Liste Özellikleri Nasıl Bulunur?
Get-ADUser cmdlet'ini kullanmak için, onu bir etki alanı yöneticisine veya yetki verilmiş izinlere sahip bir hesap altında çalıştırmanız gerekmez. Herhangi bir yetkili AD etki alanı kullanıcısı, çoğu AD nesne özniteliğinin değerlerini almak için PowerShell komutlarını çalıştırabilir (gizli olanlar hariç, Yerel Yönetici Parola Çözümü - LAPS makalesindeki örneğe bakın). Get-ADUser komutunu farklı bir hesap altında çalıştırmanız gerekirse -Credential parametresini kullanın.
Tüm etki alanı kullanıcı hesaplarının listesini görüntülemek için şu komutu çalıştırın:
Get-ADUser -filter *Önemli. Bu komutun, çok sayıda kullanıcı hesabı olan Active Directory etki alanlarında çalıştırılması önerilmez. Bu, AD bilgilerini sağlayan etki alanı denetleyicisine ağır bir yük getirebilir.
Active Directory kullanıcı özniteliklerini değiştirmek için Set-ADUser cmdlet'ini kullanın.
Belirli bir kullanıcının özelliklerini görüntülemek için,
-Identityparametre. Kimlik bir kullanıcı adı, oturum açma (SAMAccountName), DN (Ayırt Edici Ad), SID veya GUID olabilir.
Aşağıdaki PowerShell komutları, aynı AD kullanıcı hesabı için aynı sonucu döndürür:
Get-ADUser -Identity b.smith
Get-ADUser -Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=a-d,DC=loc"
Get-ADUser -Identity "Brian Smith"
Varsayılan olarak, Get-ADUser cmdlet'i yalnızca 10 temel kullanıcı özelliği döndürür (120'den fazla kullanıcı hesabı özelliğinden): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, hesap durumu (Etkin: UserAccountControl AD'ye göre Doğru/Yanlış niteliği), vb. Bu durumda, cmdlet'in çıktısı, son kullanıcı parolası değişikliğinin zamanı hakkında bilgi içermez.
Belirli bir etki alanı denetleyicisinde bir AD sorgusu yürütmek için -Sunucu seçeneğini kullanın:
Get-ADUser -Server DC01.a-d.site -Identity tstuserBaşka bir AD etki alanından kullanıcı verileri almanız gerekiyorsa, ona erişmek için etki alanı denetleyicisi adını ve kimlik bilgilerini belirtmeniz gerekir:
$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcredKullanılabilir tüm kullanıcı öznitelikleriyle ilgili ayrıntılı bilgileri görüntülemek için şu komutu çalıştırın:
Get-ADUser -identity tuser -properties *Özellikler * anahtarına sahip Get-ADUser cmdlet'i, AD kullanıcısının tüm özniteliklerini ve değerlerini (boş olanlar dahil) listeler. Kullanıcı özniteliklerinin benzer bir listesi, Active Directory Kullanıcıları ve Bilgisayarları grafik ek bileşeninde mevcuttur (
dsa.msc) öznitelik düzenleyici sekmesi altında.
Ardından gerekli kullanıcı özniteliklerinin görüntülenmesi için Get-ADUser çıktısının biçimlendirilmesine geçeceğiz. Örneğin, aşağıdaki kullanıcı özelliklerinin değerlerini görüntülemek istiyorsunuz:
Şifrenin zamanı doldu
ParolaSonAyar
ŞifreAslaSona Ermez
LastLogonZaman Damgası
Komutu çalıştırın:
Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestampArtık kullanıcı verilerinde, hesabın parola durumu (Süresi Doldu: Doğru/Yanlış), parolanın son değiştirildiği tarih ve kullanıcının etki alanına son giriş yaptığı saat (
lastlogontimestampbağlanmak). Bu bilgiyi daha uygun bir tablo görünümünde görüntülemek ve tüm gereksiz nitelikleri kaldırmak için Select-Object -Property ve Format-Table'ı kullanın:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpiresGet-ADUser -SearchBase: Belirli OU'lardan Kullanıcı Alma
Kullanıcıları yalnızca belirli bir alan kapsayıcısından (Kuruluş Birimi) görüntülemek için -SearchBase parametresini kullanın:
Get-ADUser -SearchBase 'OU=London,DC=a-d,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpiresAynı anda birden çok kuruluş biriminden kullanıcı seçmeniz gerekiyorsa, aşağıdaki PowerShell betiğini kullanın:
$OUs = "OU=NY,DC=a-d,DC=com","OU=LA,DC=a-d,DC=com","OU=MA,DC=a-d,DC=com"
$OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}PowerShell Kullanarak Bir Kullanıcının E-posta Adresini AD'den Nasıl Alabilirsiniz?
Kullanıcı e-posta adresi, Active Directory'deki kullanıcı nesnesi özniteliklerinden biridir. Kullanıcıların e-posta adreslerini listelemek için Get-ADUser cmdlet'inin özelliklerine EmailAddress alanını eklemelisiniz.
Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=a-d,DC=com'| select-object Name, EmailAddressE-posta adreslerine sahip etkinleştirilmiş kullanıcı hesaplarının listesi:
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-TableE-posta adresi olmayan Active Directory kullanıcılarının listesini almak için:
Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $nullAşağıdaki örnek, bir şirket e-posta listesini AD'den bir CSV dosyasına aktarmanıza olanak tanır. Daha sonra, bu CSV adres listesini Outlook veya Mozilla Thunderbird gibi masaüstü e-posta istemcilerine aktarabilirsiniz:
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.csvGet-ADUser: Active Directory Kullanıcılarını PowerShell ile CSV'ye Aktarma
Niteliklere sahip etki alanı kullanıcılarının sonuçtaki listesi bir metin dosyasına aktarılabilir:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txtVeya AD kullanıcıları listesini bir CSV dosyasına aktarabilirsiniz:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name -like "*Dmitry*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\tmp\user-passwords-expires.csv -Append -Encoding UTF8AD kullanıcı listesi, PowerShell kullanılarak doğrudan bir Excel dosyasına aktarılabilir.
Get-ADUser Filtre Örnekleri
-Filtre anahtarını kullanarak kullanıcı hesapları listesini bir veya daha fazla özniteliğe göre filtreleyebilirsiniz. Bu, nitelikleri belirtilen ölçütlerle eşleşen AD kullanıcılarını aramak için kullanışlıdır. Active Directory kullanıcılarının belirli özniteliklerine ilişkin değerler, bu parametrenin bağımsız değişkenleri olarak belirtilebilir. kullandığınızda
-FilterGet-ADUser cmdlet'i yalnızca filtre ölçütleriyle eşleşen kullanıcıları görüntüler.
Örneğin, adı “Dmitry” içeren aktif (Etkin) kullanıcı hesaplarını listelemek istiyorum. Aşağıdaki örnek, birden çok filtre kullanır; mantıksal PowerShell karşılaştırma işleçlerini kullanarak koşulları birleştirebilirsiniz. Bu örnekte, kullanıcı öznitelikleri her iki filtre koşulunu da (-ve) karşılamalıdır:
Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabledTüm PowerShell mantıksal işleçleri, kullanıcı öznitelikleri için değerleri seçmek üzere kullanılabilir (
-eq,
-ne,
-gt,
-ge,
-lt,
-le,
-like,
-notlike,
-and,
-or, vesaire.)
Ek olarak, sonuç kullanıcı listesini Sort-Object cmdlet ile belirli bir kullanıcı özelliğine göre sıralayabilirsiniz. Aynı anda birden çok filtreleme ölçütü belirtmek için Where-Object cmdlet'ini de kullanabilirsiniz.
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=a-d,DC=com'| where {$_.name -like "*Dmitry*" -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpiresBöylece, gerekli Active Directory özniteliklerine sahip kullanıcıların bir listesini alabilirsiniz.
Kullanıcıları aynı anda birkaç özniteliğe göre aramak için (legacyExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, PhysicalDeliveryOfficeName, RDN ve msExchMailNickname), Belirsiz Ad Çözümlemesini (
ANR) özellik:
Get-ADUser -Filter {anr -eq 'John'} | select Nameİpucu. Get-ADUser kullanarak Active Directory kullanıcılarını performans açısından ararken, Where-Object cmdlet'ine ardışık düzen kullanmaktansa Filter özniteliği kullanılarak ölçütlerin belirtilmesi tercih edilir. Bu durumda, seçim sonuçlarının filtrelenmesi etki alanı denetleyicisinde gerçekleştirilecek ve daha küçük bir veri seti ağ üzerinden bilgisayarınıza aktarılacaktır.
Get-ADUser sorgularında bir LDAP filtresi kullanabilirsiniz. -LdapFilter özniteliği kullanılarak bir LDAP filtresi belirtilir.
Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'PowerShell Get-ADUser Örnekleri
Active Directory kullanıcılarını çeşitli filtrelerle sorgulamak için daha kullanışlı PowerShell komut örnekleri gösterelim. Gerekli AD kullanıcı nesneleri listesini elde etmek için bunları birleştirebilirsiniz:
Adı Joe ile başlayan AD kullanıcılarını görüntüleyin:
Get-ADUser -filter {name -like "Joe*"}Active Directory'deki toplam kullanıcı hesabı sayısını hesaplamak için PowerShell'i kullanabilirsiniz:
Get-ADUser -Filter {SamAccountName -like "*"} | Measure-ObjectDevre dışı bırakılmış Active Directory kullanıcı hesaplarını bulun:
Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-TableActive Directory kullanıcı hesabı oluşturma tarihini şu komutla kontrol edebilirsiniz:
get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreatedSon 24 saat içinde oluşturulan yeni eklenen Active Directory kullanıcılarının listesini alabilirsiniz:
$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}Süresi dolmuş bir parolaya sahip hesapları listeleyin (etki alanı parola politikasında parola süre sonu seçeneklerini yapılandırabilirsiniz):
Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired| where {$_.PasswordExpired}|select name,passwordexpiredDinamik AD kullanıcı grupları oluşturmak için Get-ADUser ve Add-ADGroupMember cmdlet'lerini kullanabilirsiniz (şehre, iş unvanına, departmana vb. bağlı olarak).
Görev: Bir metin dosyasında saklanan kullanıcı hesaplarının listesi için (her satıra bir hesap), kullanıcının şirket adını AD'den almanız ve bunu bir CSV dosyasına kaydetmeniz gerekir (bu CSV dosyasını Excel'e kolayca aktarabilirsiniz) .
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
}Alan adı şifresini son 90 gün içinde değiştirmeyen kullanıcılar:
$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}Etkin olmayan kullanıcı hesaplarını bulun (etki alanında 180 günden fazla oturum açmamış). LastLogonTimestamp özniteliği, kullanıcının oturum açma geçmişini etki alanına almak için kullanılır:
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled -eq $True} | Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSizeBir kullanıcının fotoğrafını Active Directory'den alıp bir jpg dosyasına kaydetmek için aşağıdaki komutları çalıştırın:
$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byteKullanıcı hesabının üyesi olduğu AD gruplarının listesini almak için:
Get-AdUser sjoe -Properties memberof | Select memberof -expandproperty memberofBelirli bir etki alanı güvenlik grubunun üyesi olan kuruluş birimindeki kullanıcıları listeleyin:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}Belirli bir etki alanı güvenlik grubunun üyesi olan kuruluş birimindeki kullanıcıları listeleyin:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}Belirli bir grubun üyeleri dışında kuruluş birimindeki tüm kullanıcıları listeleyin:
$Users = Get-ADUser -filter * -SearchBase ‘OU=Berlin,DC=a-d,DC=com’ -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}Kuruluş Birimi adına sahip AD kullanıcılarının bir listesini Out-GridView tablosuna dışa aktarma:
get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridViewAD kullanıcı hesabının var olup olmadığını kontrol edin:
$SamAccountName='jbrown'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{ Write-Host "User $SamAccountName doesn’t exist"}Kullanıcının oturum açmasına izin verilen etki alanı bilgisayarlarını listeleyin (LogonWorkstations AD özniteliği aracılığıyla oturum açma kısıtlaması).
Get-ADUser jbrown -Properties LogonWorkstations | Format-List Name, LogonWorkstationsİpucu. Get-ADComputer cmdlet'i, bilgisayar özelliklerini almak veya Active Directory'den birden çok bilgisayar aramak için kullanılır.











