A popular use of PowerShell is working with Active Directory Directory Services (AD). There are so many time-saving things PowerShell can do with AD objects. Using the PowerShell Get-ADGroupMember
cmdlet and other cmdlets can save you a ton of time.
קבוצות Active Directory הן דרך נהדרת להפריד חשבונות משתמש. הקבוצות מאפשרות למנהלים להגדיר גישה למשאבים על מערכות רבות.
במאמר זה, בואו נשתמש ב-PowerShell כדי לקבל חברי קבוצת AD ולייצא את חברי קבוצת AD. באמצעות המידע הזה תוכל ליצור מגוון של דוחות מעניינים.

ניהול ודיווח ב-Active Directory, Exchange ו-Microsoft 365 עם ManageEngine ADManager Plus. הורד גרסה חינמית!
דרישות קדם
אם ברצונך להמשיך לקרוא מאמר זה, וודא שיש לך את הדרישות הבאות מוכנות:
- עובד על מחשב המשתמש ב-Windows 10 המצורף לדומיין
- מחובר עם משתמש שיכול לקרוא קבוצות AD וחשבונות משתמש
- יש להתקין את מודול Active Directory של PowerShell
למידת היסודות
כדי לשאול קבוצות AD וחברי קבוצה, יש לך שני פקודות PowerShell ברשותך – Get-AdGroup
ו-Get-AdGroupMember
.
Get-ADGroup
שואל את בקר מתמחה ומחזיר אובייקטים של קבוצת AD. Get-AdGroupMember
בודק בתוך כל קבוצה ומחזיר את כל חשבונות המשתמש, הקבוצות, אנשי קשר ואובייקטים אחרים שקיימים בקבוצה ההוא.
קבלת קבוצות AD
כדי למצוא קבוצות AD באמצעות PowerShell, ניתן להשתמש בפקודה Get-ADGroup
. בלעדי פרמטרים, Get-ADGroup
ישאל את AD ויחזיר את כל הקבוצות בדומיין באמצעות פרמטר ה-Filter
. פרמטר ה-Filter
הוא חובה וקיים כדי להגביל את הקבוצות שמתקבלות על פי קריטריונים שונים.
לדוגמה, כדי למצוא את כל הקבוצות ללא קשר לכל קריטריון, השתמש ב-Get-ADGroup
וציין תו כוכב (*) כפרמטר ה-Filter
. ניתן לראות דוגמה למטה. התמרת בין כל הקבוצות אלו עשויה לקחת זמן אם יש לך מאות או אפילו אלפי קבוצות בדומיין שלך.
אם יש צורך למצוא קבוצה יחידה, ניתן להשתמש בפרמטר Identity
.
פרמטר ה-Identity
הוא פרמטר נפוץ בין כל פקודות ה-PowerShell של Active Directory. הוא מאפשר לך להגביל את השאילתה שלך לאובייקט AD יחיד. לדוגמה, אם יש צורך לבדוק אם קבוצה בשם HR קיימת, ניתן לבדוק זאת באמצעות הפקודה למטה.
קבלת חברי קבוצה AD עם Get-AdGroupMember
שימוש בפוורשל כדי לרשום את חברי קבוצת ה-AD דורש את פקודת ה-Get-ADGroupMember
. פקודה זו משיגה אובייקטים של משתמשים, קבוצות ומחשבים בקבוצה מסוימת. אולי תרצה למצוא את כל חברי קבוצת Administrators. בצורתה הפשוטה ביותר, תשתמש פשוט בפרמטר Identity
ותציין שוב את שם הקבוצה כך:
שים לב ש-
Get-AdGroupMember
מחזירה רק חברות לקבוצות, משתמשים ומחשבים. היא לא תחזיר אובייקטים אחרים ב-AD כמו אנשי קשר.
ספירת חברי קבוצה בתוך חברי קבוצה
כפי שיידעת, קבוצות ה-AD יכולות להכיל לא רק חשבונות משתמש אלא גם קבוצות נוספות הנקראות קינון. כאשר קבוצה מקוננת בתוך קבוצה אחרת, חברי הקבוצה ההורית יורשים את ההרשאות הזהות שהוקצו לקבוצה ההורה.
בדרך כלל, פקודת ה-Get-AdGroupMember
בפוורשל אינה מחזירה חברי קבוצות מקוננות. כדי לתקן את זה, ניתן להשתמש בפרמטר Recursive
. לדוגמה, ניתן למצוא חברי קבוצות המקוננות בתוך קבוצת HR על ידי השימוש בפרמטר Recursive
כפי שמוצג למטה.
קבלת מספר קבוצות/חברים בו זמנית
אם נדרש לשאול את Active Directory עבור הרבה קבוצות או חברי קבוצות שונים בו זמנית, תוכל גם לעשות זאת באמצעות לולאת PowerShell foreach. לולאת foreach מריצה פקודה או קוד עבור כל פריט באוסף. במקרה זה, האוסף יהיה רשימת שמות קבוצות.
אולי תצטרך למצוא את כל חברי הקבוצה בקבוצות HR, חשבונאות, ו־IT. כדי לעשות זאת, תיצור תחילה אוסף או מערך של שמות הקבוצות הללו. הדוגמה למטה מגדירה את האוסף הזה כ־$groupNames
. לאחר מכן, עבור כל שם באוסף זה, הפעל Get-ADGroupMember
וספק את שם הקבוצה לפרמטר Identity
.
בנוסף, תוכל להשתמש ב־
ForEach-Object
cmdlet כדי לעבור על קבוצות.
שימוש באישורי גישה אלטרנטיביים
כמו הרבה מהקומנדליינים האחרים ב־PowerShell, לקומנדלייני קבוצת ה־AD יש פרמטר Credential
. כברירת מחדל, בכל פעם שאתה מפעיל קומנדליין קבוצת AD, הוא משתמש באישורי הכניסה שלך לשאילתת Active Directory. התנהגות זו דורשת שתהיה במחשב המחובר לדומיין ומחובר כמשתמש שיש לו הרשאות ב Active Directory.
אך מה קורה אם אתה על מחשב של קבוצת עבודה או נדרש אימות ל-AD כמשתמש אחר? במקרה כזה, ניתן להשתמש בפרמטר Credential
. פרמטר זה מאפשר לך לציין שם משתמש וסיסמה לשימוש באימות.
לדוגמה, אולי לחשבון המשתמש שלך אין את ההרשאות לבצע משימה ב-AD. יש לך חשבון שירות עם הרשאות נוספות. תוכל להיות מחובר כמשתמש סטנדרטי ועדיין לאמת עם חשבון השירות כמו שמוצג למטה.
פקודת Get-Credential
מציעה לך להזין שם משתמש/סיסמה ליצירת אימות. תעודה זו נעברת אז לפקודת Get-AdGroup
לצורך אימות.
פרמטר
Credential
הוא שגרתי ב- PowerShell לספק כרטיסי אימות. למידע נוסף, קרא שימוש בפקודת Get-Credential ב- PowerShell וכל הדברים הקשורים לכרטיסי אימות.
איך לקבל חברי קבוצה עם Get-ADGroup?
זה יישמע הפליג, אך גם עם הפקודה Get-ADGroup
תוכל לקבל חברי קבוצה.
התגלה כי Get-ADGroup
מחזירה מאפיין עבור כל קבוצה בשם members
. זהו אוסף של אובייקטי AD שהם חברי הקבוצה.
לדוגמה, כדי למצוא חברי קבוצה בקבוצת HR שוב בלעדייך שימוש ב- Get-ADGroupMember
, תוכל לעשות משהו כמו זה:
למה להשתמש בשיטה זו על פני אחרות? ההבחנה המרכזית היא שמאפייני ה-members
מכילים את כל סוגי אובייקטי Active Directory – לא רק משתמשים, מחשבים וקבוצות אחרות.
אולי יש לך אנשי קשר בתוך קבוצות שונות. כאשר אתה מריץ את Get-ADGroupMember
, אותם אנשי קשר לא יופיעו. אך אם תספר ל־Get-ADGroup
להחזיר את כל החברים בקבוצה וגם להרחיב את אוסף זה כפי שמוצג למטה, תראה את אנשי הקשר.
מציאת תכונות ספציפיות ב-AD
במקטע הבסיסי למעלה, הפכת להחזיר פשוט את כל הקבוצות וחברי הקבוצה. המידע שמוחזר עבור כל קבוצה וחבר קבוצה הוא רק תת־קבוצה של התכונות הקשורות לכל סוג של אובייקט.
ייתכן ותרצה לראות את כתובת האימייל של חשבון משתמש, תאריך ההתחברות האחרון או תכונה אחרת שמקושרת ל-AD? כדי לעשות זאת, יהיה עליך להתמקד.
אולי הצלחת למצוא את כל חברי הקבוצה בקבוצת HR, אך עדיין צריך לראות גם את כתובת האימייל של כל חשבון משתמש?
סינון תוצאות
עד כה, מצאת את כל הקבוצות וחברי הקבוצה, אך בסביבת עבודה יומיומית, יש נדידות קטנות שאתה יכול לעשות רק פעם ברבע שעה. ייתכן, כי תצטרך למצוא רק מספר מוגבל של פריטים מכל סוג.
פרמטר ה-Filter
כפי שאומר למעלה, לשני פקודות יש את הפרמטר Filter
. פרמטר זה מאפשר לך להגביל את התוצאה בצורה רבה בכמה דרכים מחוץ לגרסה של מאמר זה.
באמצעות הפרמטר Filter
, תוכל להגביל את התוצאות לפי כל תכונת AD כגון שם, סוג קבוצה, כתובת דוא"ל, התחברות אחרונה של משתמשים וכו'
לדוגמה, אולי תרצה למצוא רק קבוצות אבטחה. במקרה כזה, יש לציין תכונת GroupCategory
ולקבוע תנאי כך שרק קבוצות Security
יוחזרו.
אולי תרצה למצוא את כל הקבוצות אבטחה, אך הן חייבות לא להיות קבוצות מקומיות של דומיין. במקרה כזה, עליך להוסיף תנאי נוסף (הפעם באמצעות אופרטור -ne
) כדי למנוע מקבוצות מקומיות של דומיין להוחזר.
אם ברצונך ללמוד איך ליצור סנני שאילתות, הקפיד לבדוק את למידת סנני Active Directory ו- LDAP ב-PowerShell.
הגבלת תוצאות הקבוצה לפי יחידת ארגון (OU)
אולי יש לך קבוצות שונות מסודרות ביחידות ארגון. אין לך בהכרח רצון למצוא את כל הקבוצות, אלא רק את הקבוצות ביחידת ארגון ספציפית. במקרה כזה, תוכל להשתמש בפרמטר SearchBase
.
הפרמטר SearchBase
מאפשר לך לציין את שם ה-DN של היחידה הארגונית (OU) ממנה להתחיל בחיפוש קבוצות. לדוגמה, אולי יש לך OU בשם מיקומים בשורש הדומיין שלך. ב-OU מיקומים, יש לך יחידות OU נוצרות כמו אוסטין, ניו יורק ו-לוס אנג'לס. אתה רוצה למצוא רק קבוצות ב-OU של ניו יורק ולמנוע לראות את האחרות.
במטרה להדגיש, מבנה OU של AD מוצג למטה. שים לב שקיימות קבוצות אחרות מחוץ ל-OUs של מיקומים.
אולי עליך למצוא את כל קבוצות ה-AD שנמצאות רק ב- OU של NYC. כדי להגביל את השאילתה, יש להשתמש בפרמטר SearchBase
ולספק את ה- DN כפי שמוצג למטה. כל הקבוצות בתוך OU של Locations יוחזרו.
אך כעת יש לך צורך למצוא את כל הקבוצות ב-כל OU בתוך ה-Locations OU. Get-ADGroup
מחזיר רק קבוצות ב- OU עצמו של Locations – לא ב- OU הילדים.
כדי לקבל קבוצות בתוך OU הילדים, עליך להשתמש בפרמטר SearchScope
. הפרמטר הזה דומה לפרמטר Recursive
בכך שהוא יבדוק גם את האובייקטים הילדים.
לדוגמה, כדי למצוא את כל הקבוצות ב-כל OU בתוך ה-Locations OU, יש לציין Subtree
או 2
. ערך זה עבור SearchScope
אומר ל-Get-ADGroup
לחפש באופן רקורסיבי את כל הילדים, נכדים ועוד בתוך ה- OU.
לפרטים נוספים על אפשרויות פרמטר SearchScope
, יש להתייחס לתיעוד של Get-ADGroup
.
יצוא של קבוצות AD וחברים
אז כעת אתה יודע כיצד לשאול ולקבל את הקבוצות וחבריהן שאתה זקוק להם. כל המידע הזה נשלח לקונסולת PowerShell. אך כעת יש לך צורך להביא את המידע הזה לתוך קובץ CSV או גיליון אקסל.
הדבר היחיד שעליך לעשות כעת הוא לשלוח את כל המידע הזה לקובץ.
ייצוא ל-CSV
אחד מתבצע תצורה פופולרית לייצוא מידע AD הוא בתבנית של CSV. PowerShell מציע cmdlet יעיל שמאפשר ליצור בקלות קבצי CSV מפלט PowerShell בשם Export-Csv
.
ניתן ליצור קובץ CSV מכל פקודה שצוינה במאמר זה על ידי הפנייה אל Export-Csv
. באמצעות הדוגמה למטה, כל הפלט ש Get-AdGroup
היה מחזיר יופנה למסך המחשב, יופנה לקובץ CSV במקום זאת.
למידע נוסף על פקודת ה-cmdlet המועילה הזו, ראה Export-Csv: הדרך ב-PowerShell לטפל בקבצי CSV כפקודות ראשונות.
ניתן גם בקלות לייצא תוצאות ל-CSV באמצעות ה-cmdlet Get-AdGroupMember
.
ייצוא ל-Excel
PowerShell אינו מציע דרך מובנית לייצוא מידע ל-Excel. אך, תמיד ניתן להוריד את התוסף המוחלט החינמי בשם ImportExcel. תוסף זה מביא יכולות ייצוא דומות ל-CSV ישירות לגליונות אקסל. כדי להתקין את מודול ה-PowerShell, הריץ Install-Module ImportExcel -Scope CurrentUser
.
בשימוש בדוגמה שמופיעה למעלה, במקום קובץ CSV, אם תרצה לייצא את הקבוצות לגליון אקסל, עליך להשתמש ב-cmdlet Export-Excel
כפי שמוצג למטה.
מצא סיסמאות נסרקות ובטוחות ב-Active Directory שלך על ידי בדיקה נגד רשימת הסיסמאות של NCSC.
המודול ImportExcel מציע המון פונקציות לעבוד עם Excel. אם אתה זקוק לגיליון אלקטרוני מתוחזק יותר, ייתכן ויש לו פונקציה בשבילך.
למידע נוסף על שימוש במודול ImportExcel, קרא מאמר זה. המאמר מספק הקדמה נהדרת למקרים נפוצים שהמודול יכול לטפל בהם.
ניהול ודיווח על Active Directory, Exchange ו-Microsoft 365 עם ManageEngine ADManager Plus. הורד גרסה ניסיונית חינם!
מסקנה
עם שני קומנדליינים בפוורשל, תוכל לעשות כמעט כל דבר עם קבוצות AD. המאמר הזה הוא רק הקדמה ליכולות הזמינות לך. השתמש בידע שנאסף כאן, עקוב אחרי קישורים להעמקה נוספת במאמר וראה מה אתה יכול לבנות!