Get-AdUser: כיצד לאכוף רישום משתמשים ב־Active Directory עם PowerShell

פוורשל הוא כלי חיוני עבור מנהלי ה-IT, והוא מקל על ביצוע ניפוי בחשבונות המשתמשים ב-Active Directory עם פקודת Get-AdUser. במדריך זה, אנו מתכננים לפרט איך להתחיל עם קובץ ה-Active Directory הפופולרי.

הקדמה לפקודת ה-PowerShell של Get-AdUser

הפקודה Get-AdUser היא אחת מהפקודות הפופולריות ביותר ב-PowerShell של Active Directory. היא מאפשרת לך לקבל אובייקט משתמש מסוים, או מאפשרת לבצע חיפושים שניתנים להתאמה אישית כדי לקבל מספר אובייקטים משתמשים.

פרסומת

הפרמטר Identity משמש לציון איזה משתמש ב-Active Directory לקבל. יש לך מספר אפשרויות על כיצד לזהות את המשתמש:

  • ניתן להשתמש בשם המיוחד שלהם (DN), GUID, מזהה אבטחה (SID), או שם חשבון מנהל החשבון (SAM).
  • ניתן גם להגדיר את הפרמטר למשתנה אובייקט משתמש כמו $UserA או להעביר אובייקט משתמש דרך הצינור לפרמטר Identity.

תוכל להשתמש בפרמטר Filter או LDAPFilter כדי לחפש ולקבוע יותר ממשתמש אחד, הפרמטר Filter משתמש בשפת הביטויים של PowerShell (PSL) כדי לשאול את Active Directory.

לשפת תכנות PowerShell יש דקדוק הביטויים שמאפשר למנהלים תמיכה עשירה בהמרת סוגים לסוגי ערכים שמקובלים על ידי הפרמטר Filter. אם כבר קיימים מחרוזות שאילתת פרוטוקול גישה לספרייה קלה (LDAP), השתמש בפרמטר LDAPFilter.

אם לא הוגדרו פרמטרים במפורש, Get-AdUser מציג סט ברירת מחדל של מאפייני אובייקט משתמש. כדי לקבל מאפיינים נוספים, השתמש בפרמטר Properties. נכנס נוסף לתיאור של חלק מהפרמטרים שניתן להשתמש בהם מאוחר יותר במאמר זה.

פרסום

איך להשתמש ב-Get-AdUser והדרישות הנדרשות

לפני שתוכל להשתמש ב-Get-AdUser ובפקודות PowerShell הקשורות בפעילות נתוני Active Directory אחרות, עליך לוודא שמודול ה-Active Directory מותקן וטעון בתחנת העבודה שלך. בהתבסס על גרסת הווינדוס שאתה מריץ, ישנם שיטות שונות שאתה יכול לעקוב אחריהן כדי להתקין את ה-cmdlet.

למען הקיצוניות, אסביר כאן את שתי השיטות המקובלות ביותר שאתה כנראה תעבור דרך אותן כמנהל או מקצוען IT הניהול את Active Directory המקומית.

למעשה, באפשרותך להשתמש בפקודת PowerShell הבאה כדי להתקין את הכלי Remote Server Administration Tools (RSAT) ישירות מ-Windows Update.

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

השיטה השנייה היא להשתמש ביישום ההגדרות כדי להתקין את כלי ה-RSAT ישירות. לחץ על התחל-> הגדרות -> יישומים -> תכונות אופציונליות -> הוסף תכונה -> וסמן בתיבת הסימון באפשרות RSAT: Active Directory Domain Services and Lightweight Directory Services Tools.

מודעות

לחץ על הכפתור התקן.

כיצד למצוא חשבון משתמש AD באמצעות הפרמטר -זיהוי

כן, בוא נתחיל להשתמש ב-cmdlet ונראה כיצד אני יכול לעזור לך להיות יותר מיומן (ומהיר!) לקבל את המידע שאתה צריך. אני עובד בסביבת המעבדת שלי Hyper-V (של Windows Server 2022 Active Directory), ואני מחובר לתחום מכונה וירטואלית של Windows 10 21H1. חיפשתי בתפריט התחל עבור 'Active Directory Module for Windows PowerShell' ופתחתי אותו דרך 'הפעל כמנהל'.

Active Directory Module for Windows PowerShell

ראשית, תמצא לי משתמש דומיין בהתבסס על תכונת sAMAccountName

Get-ADUser breinders
Finding a user account via their sAMAccountName

זהו. כעת נוכל להשתמש בתכונת objectGUID (או GUID) כדי למצוא משתמש. בוא ננסה:

Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250
Finding an account via their objectGUID (GUID)

אה, אותו חשבון משתמש. מצוין. נוכל גם לחפש אחר משתמש בהתבסס על זיהוי האבטחה, או SID.

Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107
Finding an account via their Security IDentifier (SID)

כן, קצת חוזר על עצמו, אבל אתה מבין את הנקודה. ניתן גם להשתמש בשם משפחה של המשתמש, שם, UserPrincipalName ואחרים.

שימוש במסנן Get-AdUser

בסביבות גדולות, אני לא אמליץ להקליד 'Get-AdUser' לבד כי זה יתחיל לאחזר את כל עצם המשתמש בדומיין AD שאתה מחובר אליו. לא רק שזה יתחיל לשטוף את המסוף שלך בנתונים, זה גם עשוי לשים מתח אפשרי על שרת הבקר דומיין שבו העבודה שלך משתמשת.

אילו יכולנו לסנן את כל בסיס המשתמשים ולחפש משתמשים ספציפיים על פי תכונות מסוימות. זה בדיוק מה שפרמטר ' -filter' נועד למעשה!

הפרמטר ' -filter' מציין מחרוזת שאיתה אנו מקבלים את אובייקטי ה-AD. מבנה ה-PowerShell Expression Language (PEL) מספק תמיכה מושכלת בהמרות טיפוס עבור סוגי ערכים שמתקבלים על ידי פרמטר המסנן. בָּינתי המספרת. זה אומר שהמפעיל מונח בין האופרנד המיועד והערך. בוא נראה על כמה דוגמאות כדי להעניק לך רעיון טוב יותר.

את ראשונה, בוא נגלה את כל החשבונות שהם 'מופעלים'.

Get-ADUser -filter {Enabled -eq "true"} | ft
Locating all the enabled accounts

אנו משתמשים בתחביר הנחמד PEL הזה כדי למצוא כל החשבונות שיש להם שדה 'Enabled' ששווה ל- True. אנו גם מופנים את הפלט באמצעות פקודת ה- PowerShell cmdlet של Format-Table עבור תצוגת פורמט שנוח יותר לקריאה.

באשר לשלב הבא, נציג את כל המשתמשים עם כתובת דוא"ל.

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail
Finding all the user accounts with an email address

למעשה, שימו לב שאנו משתמשים בפרמטר '-filter' כדי לכלול רק חשבונות משתמש ש-לא יש להם כתובת דוא"ל 'null'. או, בפשטות יותר, כל החשבונות עם כתובת דוא"ל. אני יודע, לפעמים קשה לנסות לחשוב כמו מחשב.

שנית, אנו מתמקדים בשלושת המאפיינים שם, שם פרטי ודוא"ל (כתובת דוא"ל). אנו משתמשים ב- Format-Table ורשימת המאפיינים האלה. קליפה!

יתכן גם שתרצו לבצע בדיקת חשבונות שלכם מנותקת בקשר לאבטחה. באפשרותכם גם להשתמש בפרמטר '-filter' כדי למצוא את כל החשבונות עם התכונת 'passwordneverexpires'. כל כך נדרש להמליץ על זה.

Get-AdUser where name like?

יכולות נוספות הן השימוש בפרמטרים שונים עם -filter כדי למצוא רק משתמשים ספציפיים התואמים את המאפיינים השונים של אובייקט משתמש ב- AD. אף על פי שהסביבת הלימוד שלי קטנה מאוד וכוללת רק עשרה חשבונות משתמש, עדיין יכולה להדגיש את העוצמה והגמישות שבאפשרות למצוא מהר מאוד את החשבונות שאתם מחפשים. בואו, נמצא את כל המשתמשים שיש להם 'Reinders' בשמם.

Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

אנו משתמשים בפרמטר 'Name' ומוצאים את כל החשבונות שיש להם 'Reinders' בכל מקום בשם. זה יכול להיות השם הפרטי שלהם, שם המשפחה שלהם, ואפילו שם אמצעי אם הוא הוזן. אם ברצונך למצוא רק משתמשים עם Reinders כשם המשפחה, שנה את השדה -like להיות "*Reinders". (שים לב, אין אסטריקס (*) בסוף השדה).

הגבלת טווח חיפוש Get-AdUser ליחידת ארגון

אם יש לך תחום/עסק שגדול יחסית, יתכן שתתעקש על זמני חיפוש ארוכים בעת הרצת הפקודות אלו, או השפעות יתרות על בקרי הדומיין שלך. בוא נדבר על הגבלת טווח החיפושים האלו ליחידת ארגון מסוימת (OU).

ניתן להשתמש בפרמטר '-SearchBase' ולציין OU (או מספר OU) באמצעות התחביר הבא.

Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress
Here, we’re limiting the search scope to the ‘Test Users’ Organization Unit (OU)

כאן, אנו מגבילים את הטווח שלנו לכל המשתמשים ב- OU "משתמשי בדיקה", ואז מדפיסים את שמם וכתובת האימייל שלהם בפורמט טבלה.

שימוש ב- Get-AdUser עם הרשאות חלופיות

כברירת מחדל, ה- Get-AdUser cmdlet מורץ בהקשר של המשתמש המחובר כעת. אם ברצונך להפעיל את הפקודה עם הרשאות חלופיות, ניתן להשתמש במשתנה, לאחסן את הרשאות החלופיות במשתנה הזה, ולאזרח את הפקודה באמצעות המתג '-Credential'.

$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

שוב, פשוט וברור!

עבודה עם הפרמטר Properties של Get-AdUser

I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.

הפרמטר '-Properties' מציין את המאפיינים של אובייקט הפלט לאחזר מהשרת. בברירת מחדל, אם אינך משתמש בו, יוחזרים ומוצגים עשרה מאפיינים. דברים כגון DistinguishedName, האם החשבון פעיל או לא פעיל, GivenName של המשתמש, Name, GUID, ומאפיינים נוספים דומים למערכת. אך ישנם מספר מאפיינים זמינים רבים יותר. עליך להשתמש בפרמטר זה כדי לאחזר מאפיינים שאינם כלולים בקבוצת ברירת המחדל.

ציין מאפיינים עבור פרמטר זה כרשימה מופרדת בפסיקים של שמות. כדי להציג את כל המאפיינים שמוגדרים על האובייקט, ציין * (כוכבית).

כדי לגשת למאפיינים הללו, עליך פשוט לציין אותם; תשתמש בשם של המאפיין. עבור מאפיינים שאינם ברירת מחדל או מאפיינים מורחבים, עליך לציין את שם ההצגה ב־LDAP (פרוטוקול גישה לספריית התיקיות).

בוא נראה כמה דוגמאות.

Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet
Displaying all users with the date and time their password was last set/reset

הדוגמה לעיל מציגה את כל המשתמשים בדומיין עם השם שלהם ותאריך/זמן מתי סיסמתם נקבעה או אופסה לאחרונה.

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated
Another nice feature is listing every user’s Creation Date in Active Directory

זה מראה מתי נוצר החשבון ב Active Directory. נסיים זאת בשאילתה שמביאה את השם, המחלקה, והמנהיג עבור כל חשבון.

Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager
Listing the Department and the Manager of each user, if they’re populated in Active Directory

עוד דוגמה אחת ושימוש נהדר בפקודת Export-Csv. אם תרצה לקבל רשימה של כל המשתמשים בדומיין ולכלול את כל המאפיינים, תנסה להפעיל את הפקודה הזו כדי לייצא הכל לקובץ CSV נוח.

Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv

סיכום

I hope you gained some knowledge about how to use the Get-AdUser PowerShell command. This really scratches the surface, however, this is one aspect I like about the power of PowerShell: Learning about the core properties of a cmdlet and extrapolating it out to your organization.

לעיתים קרובות, זה מאוד קל לחשוב על המון מקרים שבהם ניתן להשתמש בפקודה זו כדי לפתור בעיה, ליצור תיעוד עבור מהנדסים אחרים, ולסייע בתהליכי איתור תקלות בכללי. זה יכול להיות מאוד שימושי. ובכל מקרה, השימוש בכמה מהפקודות הללו כדי להפיק סקריפט PowerShell… תמיד משפר יעילות!

אל תהסס להשאיר שאלות או הערות.

מאמר קשור:

Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/