Get-ADUser: איתור פרטי משתמש של Active Directory באמצעות PowerShell
cmdlet Get-ADUser PowerShell מאפשר לך לקבל מידע אודות משתמש Active Directory, התכונות שלו וחיפוש בין משתמשי תחום. זהו אחד מרכיבי ה- cmdlet הפופולריים יותר של PowerShell לקבלת מידע מ- AD. באמצעות ה- cmdlet Get-ADUser, באפשרותך לקבל את הערך של כל תכונה של חשבון משתמש AD, להציג משתמשי תחום עם תכונות, לייצא דוחות משתמשים לקבצי CSV ולהשתמש בקריטריונים שונים כדי לבחור ולסנן משתמשי תחום.
פקודת Get-ADUser במודול PowerShell של Active Directory
ה
Get-ADUsercmdlet כלול במודול מיוחד לאינטראקציה עם Active Directory - מודול Active Directory עבור Windows PowerShell. רכיבי cmdlet של מודול RSAT-AD-PowerShell מאפשרים לך לבצע פעולות שונות באובייקטי AD.
הערה. בעבר, כדי לקבל מידע על התכונות של חשבונות משתמש AD, היית צריך להשתמש בכלים שונים: מסוף ADUC (כולל שאילתות AD שמורות), סקריפטים VBS, dskary וכו '. כל הכלים האלה ניתן להחליף בקלות על ידי cmdlet Get-ADUser.
בדוגמה זו, נראה כיצד להשתמש ב- cmdlet Get-ADUser PowerShell כדי לקבל מידע אודות הפעם האחרונה שבה סיסמת משתמש השתנתה, מועד התפוגה של הסיסמה ומאפיינים של משתמשים אחרים.
כדי להשתמש במודול RSAT-AD-PowerShell, עליך להפעיל את מסוף PowerShell המוגבר ולייבא את המודול עם הפקודה:
Import-Module ActiveDirectoryמודול RSAT-AD-PowerShell מותקן כברירת מחדל ב- Windows Server 2012 (ואילך) בעת פריסת התפקיד Active Directory Domain Services (AD DS). כדי להתקין את המודול במחשב מארח של Windows Server חבר תחום, הפעל את הפקודה:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeatureכדי להשתמש ב- cmdlet Get-ADUser ב- Windows 10/11 בשולחן העבודה, עליך להתקין את הגירסה המתאימה של RSAT. באפשרותך להפעיל RSAT באמצעות הגדרות -> Apps -> תכונות אופציונליות -> הוספת תכונה -> RSAT: Active Directory Domain Services ו- Lightweight Directory Directory Services Tools.
באפשרותך להתקין את מודול RSAT AD ב- Windows 10 ו- 11 באמצעות PowerShell:
Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"אם מודול RSAT-AD-PowerShell אינו מותקן במחשב, כאשר אתה מפעיל את הפקודה Get-ADUser, תופיע שגיאה:
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.ודא שהמודול מותקן, ובמידת הצורך, יבא אותו להפעלת PowerShell שלך:
Import-Module ActiveDirectoryיש גם דרך להשתמש במודול AD-PowerShell מבלי להתקין RSAT במחשב. זה מספיק כדי להעתיק את קבצי המודול הראשי ולייבא את המודול לתוך ההפעלה PowerShell:
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.resources.dll"רשימה מלאה של כל הארגומנטים של cmdlet Get-ADUser ניתן להשיג כדלקמן:
help Get-ADUserכיצד למצוא מאפייני משתמש ורשימה של AD באמצעות Get-ADUser?
כדי להשתמש ב- cmdlet Get-ADUser, אינך צריך להפעיל אותו תחת חשבון עם מנהל תחום או הרשאות מוקצות. כל משתמש מורשה בתחום AD יכול להפעיל פקודות PowerShell כדי לקבל את הערכים של רוב תכונות אובייקט AD (למעט תכונות סודיות, עיין בדוגמה במאמר פתרון סיסמה של מנהל מערכת מקומי - LAPS). אם עליך להפעיל את הפקודה Get-ADUser תחת חשבון אחר, השתמש בפרמטר -Credential.
כדי להציג את הרשימה של כל חשבונות המשתמשים בתחום, הפעל פקודה זו:
Get-ADUser -filter *חשוב. לא מומלץ להפעיל פקודה זו בתחומים של Active Directory עם מספר רב של חשבונות משתמשים. פעולה זו עלולה להטיל עומס כבד על בקר התחום המספק את מידע AD.
השתמש ב- cmdlet Set-ADUser כדי לשנות תכונות משתמש של Active Directory.
כדי להציג את המאפיינים של משתמש ספציפי, השתמש בלחצן
-Identityפרמטר. זהות יכולה להיות שם משתמש, כניסה (SAMAccountName), DN (שם מכובד), SID או GUID.
פקודות PowerShell הבאות יחזירו את אותה תוצאה עבור אותו חשבון משתמש AD:
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"
כברירת מחדל, ה- cmdlet Get-ADUser מחזיר רק 10 תכונות משתמש בסיסיות (מתוך יותר מ- 120 מאפייני חשבון משתמש): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, מצב חשבון (מופעל: True/False בהתאם לתכונה UserAccountControl AD) וכן הלאה. במקרה זה, פלט ה- cmdlet אינו מכיל מידע אודות מועד שינוי סיסמת המשתמש האחרון.
כדי להפעיל שאילתת AD בבקר תחום ספציפי, השתמש באפשרות -Server:
Get-ADUser -Server DC01.a-d.site -Identity tstuserאם עליך לקבל נתוני משתמש מתחום AD אחר, עליך לציין את שם בקר התחום ואת האישורים כדי לגשת אליו:
$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcredכדי להציג את המידע המפורט אודות כל תכונות המשתמש הזמינות, הפעל פקודה זו:
Get-ADUser -identity tuser -properties *ה- cmdlet Get-ADUser עם הבורר מאפיינים * מפרט את כל התכונות של משתמש AD ואת הערכים שלהן (כולל תכונות ריקות). רשימה דומה של תכונות משתמש זמינה ביישום ה- Snap-in הגרפי 'משתמשים ומחשבים של Active Directory' (
dsa.msc) תחת הכרטיסיה עורך תכונות.
לאחר מכן נלך לעיצוב של פלט Get-ADUser כך שיוצגו תכונות המשתמש הדרושות. לדוגמה, ברצונך להציג את הערכים של מאפייני המשתמש הבאים:
PasswordExpired
סיסמה הוקמה לאחרונה
הסיסמה לעולם לא פגה
LastLogonTimetamp
הפעל את הפקודה:
Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestampכעת בנתוני המשתמש, יש את המידע על מצב סיסמת החשבון (פג: True/False), תאריך שינוי הסיסמה האחרונה ושעת הכניסה האחרונה של המשתמש לתחום (
lastlogontimestampתכונה). כדי להציג מידע זה בתצוגת טבלה נוחה יותר ולהסיר את כל התכונות המיותרות, השתמש ב- Select-Object -Property וב- Format-Table:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpiresGet-ADUser -SearchBase: קבלת משתמשים מ-OU ספציפי
כדי להציג משתמשים רק מגורם מכיל ספציפי של תחום (יחידה ארגונית), השתמש בפרמטר -SearchBase:
Get-ADUser -SearchBase 'OU=London,DC=a-d,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpiresאם עליך לבחור משתמשים מתוך רכיבי OU מרובים בו-זמנית, השתמש בקובץ ה-script הבא של PowerShell:
$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}כיצד לקבל כתובת דוא"ל של משתמש מ- AD באמצעות PowerShell?
כתובת דואר אלקטרוני של משתמש היא אחת מתכונות אובייקט המשתמש ב- Active Directory. כדי לפרט את כתובות הדואר האלקטרוני של המשתמשים, עליך להוסיף את השדה EmailAddress למאפיינים של ה- cmdlet Get-ADUser.
Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=a-d,DC=com'| select-object Name, EmailAddressרשימת חשבונות המשתמשים הזמינים עם כתובות דואר אלקטרוני:
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Tableכדי לקבל את רשימת משתמשי Active Directory ללא כתובת דואר אלקטרוני:
Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $nullהדוגמה הבאה מאפשרת לך לייצא רשימת דואר אלקטרוני של חברה מ- AD לקובץ CSV. מאוחר יותר, תוכל לייבא רשימת כתובות CSV זו ללקוחות דואר אלקטרוני שולחניים כגון Outlook או Mozilla Thunderbird:
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 ל- CSV באמצעות PowerShell
ניתן לייצא את הרשימה המתקבלת של משתמשי תחום עם תכונות לקובץ טקסט:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txtלחלופין, באפשרותך לייצא את רשימת משתמשי AD לקובץ CSV:
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 UTF8ניתן לייצא את רשימת המשתמשים של AD ישירות לקובץ Excel באמצעות PowerShell.
דוגמאות למסנן Get-ADUser
באמצעות בורר -סינון, ניתן לסנן את רשימת חשבונות המשתמשים לפי תכונה אחת או יותר. אפשרות זו שימושית לחיפוש משתמשי AD שתכונותיהם תואמות לקריטריונים שצוינו. ניתן לציין ערכים עבור תכונות ספציפיות של משתמשי Active Directory כארגומנטים לפרמטר זה. בעת השימוש בלחצן
-Filterפרמטר, cmdlet Get-ADUser יציג רק משתמשים התואמים לקריטריוני הסינון.
לדוגמה, ברצוני לרשום חשבונות משתמשים פעילים (מופעלים) ששמם מכיל "דמיטריה ". הדוגמה הבאה משתמשת במסננים מרובים; באפשרותך לשלב תנאים באמצעות אופרטורי ההשוואה לוגיים של PowerShell. בדוגמה זו, תכונות המשתמש חייבות לעמוד בשני תנאי המסנן (-ו):
Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabledניתן להשתמש בכל האופרטורים הלוגיים של PowerShell לבחירת ערכים עבור תכונות משתמש (
-eq,
-ne,
-gt,
-ge,
-lt,
-le,
-like,
-notlike,
-and,
-orוכו')
בנוסף, באפשרותך למיין את רשימת המשתמשים המתקבלת לפי תכונת משתמש ספציפית באמצעות ה- cmdlet מיון אובייקט. באפשרותך גם להשתמש ב- cmdlet Where-Object כדי לציין קריטריוני סינון מרובים בו-זמנית.
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, PasswordNeverExpiresלכן, באפשרותך לקבל רשימה של משתמשים עם כל התכונות הדרושות של Active Directory.
כדי לחפש משתמשים לפי מספר תכונות בו-זמנית (legacyExchangeDN, proxyAddresses, SAMAccountName, שם משפחה, DisplayName, SamAccountName, physicalDeliveryOfficeName, RDN ו- msExchMailNickname), באפשרותך להשתמש ברזולוציית השם רב-משמעית (
ANR) תכונה:
Get-ADUser -Filter {anr -eq 'John'} | select Nameרמז. בעת חיפוש משתמשי Active Directory המשתמשים ב- Get-ADUser, מנקודת מבט של ביצועים, ציון הקריטריונים באמצעות התכונה מסנן עדיף על שימוש בקו הצינור ל- cmdlet Where-Object. במקרה זה, סינון תוצאות הבחירה יבוצע בבקר התחום, וקבוצה קטנה יותר של נתונים תועבר למחשב דרך הרשת.
באפשרותך להשתמש במסנן LDAP בשאילתות Get-ADUser. מסנן LDAP מצוין באמצעות התכונה -LdapFilter.
Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'PowerShell Get-ADUser דוגמאות
בוא נציג כמה דוגמאות שימושיות יותר לפקודות PowerShell עבור ביצוע שאילתות למשתמשי Active Directory עם מסננים שונים. באפשרותך לשלב אותם כדי לקבל את הרשימה הנדרשת של אובייקטי משתמש AD:
הצג משתמשי AD, ששמם מתחיל ב-Joe:
Get-ADUser -filter {name -like "Joe*"}באפשרותך להשתמש ב- PowerShell כדי לחשב את המספר הכולל של חשבונות משתמשים ב- Active Directory:
Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Objectמצא חשבונות משתמשים לא זמינים של Active Directory:
Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Tableבאפשרותך לבדוק את תאריך יצירת חשבון המשתמש של Active Directory באמצעות הפקודה:
get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreatedבאפשרותך לקבל את רשימת משתמשי Active Directory החדשים שנוספו שנוצרו ב- 24 השעות האחרונות:
$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}פרט את החשבונות עם סיסמה שפג תוקפה (באפשרותך להגדיר אפשרויות תפוגת סיסמה במדיניות סיסמת התחום):
Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired| where {$_.PasswordExpired}|select name,passwordexpiredבאפשרותך להשתמש ברכיבי ה- cmdlet Get-ADUser ו- Add-ADGroupMember כדי ליצור קבוצות משתמשים דינאמיות של AD (בהתאם לעיר, לתפקיד, למחלקה וכו').
משימה: לקבלת רשימת חשבונות המשתמשים המאוחסנים בקובץ טקסט (חשבון אחד בכל שורה), עליך לקבל את שם החברה של המשתמש מ- AD ולשמור אותו בקובץ CSV (ניתן לייבא קובץ CSV זה בקלות ל- Excel).
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
}המשתמשים שלא שינו את סיסמאות התחום שלהם ב-90 הימים האחרונים:
$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}איתור חשבונות משתמשים לא פעילים (לא מחוברים לתחום במשך יותר מ- 180 יום). התכונה lastLogonTimestamp משמשת להעברת היסטוריית הכניסה של המשתמש לתחום:
$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)}} -AutoSizeכדי לקבל תמונת משתמש מ- Active Directory ולשמור אותה בקובץ jpg, הפעל את הפקודות הבאות:
$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byteכדי לקבל רשימה של קבוצות AD שחשבון המשתמש חבר בהן:
Get-AdUser sjoe -Properties memberof | Select memberof -expandproperty memberofפרט את המשתמשים מה-OU החברים בקבוצת אבטחה ספציפית של תחום:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}פרט משתמשים מה-OU החברים בקבוצת אבטחה ספציפית של תחום:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}פרט את כל המשתמשים מה-OU, למעט חברים בקבוצה ספציפית:
$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
}
}ייצוא רשימה של משתמשי AD עם שם היחידה הארגונית לטבלה Out-GridView:
get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridViewודא שחשבון המשתמש של AD קיים:
$SamAccountName='jbrown'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{ Write-Host "User $SamAccountName doesn’t exist"}פרט את מחשבי התחום שהמשתמש רשאי להיכנס אליהם (הגבלת כניסה באמצעות התכונה LogonWorkstations AD).
Get-ADUser jbrown -Properties LogonWorkstations | Format-List Name, LogonWorkstationsטיפ. ה- cmdlet Get-ADComputer משמש לקבלת מאפייני מחשב או לחיפוש מחשבים מרובים מ- Active Directory.











