ניהול קבוצות Active Directory באמצעות PowerShell


יישום ה- Snap-in הגרפי 'משתמשים ומחשבים של Active Directory (ADUC) אינו הכלי היחיד לניהול קבוצות אבטחה ב- Active Directory. באפשרותך להשתמש בפקודות PowerShell פשוטות לניהול יומיומי של קבוצות משתמשים בתחום Active Directory שלך. במאמר זה, נבחן כיצד להשתמש ב- PowerShell כדי ליצור קבוצה חדשה ב- AD, להוסיף אליה משתמשים (או למחוק), להציג/לייצא רשימה של משתמשי קבוצה ופקודות שימושיות אחרות המשמשות לעתים קרובות בעת ניהול קבוצות AD.

כדי לנהל קבוצות AD, באפשרותך להשתמש במודול Active Directory עבור Windows PowerShell. מודול RSAT-AD-PowerShell זמין בכל הגירסאות של Windows Server (החל מ- Windows Server 2008R2), וניתן להתקין אותו כתכונת RSAT בשולחנות העבודה של Windows 10 ו- Windows 11.

בדוק אם מודול AD נטען בהפעלת PowerShell הנוכחית:

Get-Module -Listavailable

כפי שניתן לראות, מודול ActiveDirectory נטען. אם לא, יבא אותו באמצעות פקודה זו:

Import-Module ActiveDirectory

בוא נפרט את רכיבי ה- cmdlet של PowerShell המאפשרים לך לנהל קבוצות AD:

Get-Command -Module ActiveDirectory -Name "*Group*"

קיימים 11 רכיבי cmdlet זמינים:

  • Add-ADGroupMember
  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • New-ADGroup
  • Remove-ADGroup
  • Remove-ADGroupMember
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

New-ADGroup: יצירת קבוצת AD חדשה באמצעות PowerShell

צור קבוצת אבטחה חדשה בגורם המכיל (OU) של Active Directory שצוין באמצעות הפקודה New-ADGroup:

New-ADGroup "TestADGroup" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=a-d,DC=com' -GroupScope Global -PassThru -Verbose

באפשרותך להשתמש בתכונות Description ו- DisplayName כדי לציין את תיאור הקבוצה ואת שם התצוגה.

באפשרותך להשתמש בפרמטר GroupScope can כדי להגדיר אחד מסוגי הקבוצות הבאים:

  • 0=דומיין מקומי

  • 1=גלובלי

  • 2=אוניברסלי

באפשרותך ליצור קבוצת תפוצה באופן הבא:

New-ADGroup "TestADGroup-Distr" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=a-d,DC=com' -GroupCategory Distribution -GroupScope Global -PassThru -Verbose

ניתן להשתמש בקבוצות תפוצה כדי לשלוח הודעות דוא"ל ו/או להעניק הרשאות AD. קבל מידע נוסף על קבוצות תפוצה של Exchange כאן.

בעת יצירת קבוצת AD, ניתן למלא כל תכונות. הדרך הקלה ביותר להגדיר את הערכים של תכונות קבוצה שונות היא באמצעות hashtable:

$attrs = @{"mail"="mundmins@a-d.site";"displayname"="ALL Munich Admins"}
New-ADGroup -Name MUNAdmins -GroupScope Global -OtherAttributes $attrs

הוספת משתמשים ל- Active Directory באמצעות Add-AdGroupMember

באפשרותך להוסיף משתמשים לקבוצת Active Directory באמצעות ה- cmdlet Add-AdGroupMember. בוא נוסיף שני משתמשים לקבוצה החדשה:

Add-AdGroupMember -Identity TestADGroup -Members user1, user2

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

הפורמט של קובץ ה- CSV צריך להיות כדלקמן (משתמשים חייבים להיות רשומים על ידי אחד בשורה עם משתמשים ככותרת העמודה).

Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}

כדי לקבל את כל החברים בקבוצה (groupX) ולהוסיף אותם לקבוצה אחרת (groupY), השתמש בפקודה זו:

Get-ADGroupMember “GroupX” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “Group-Y” -Members $_}

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

Get-ADGroupMember -Identity “GroupX” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “GroupY” -Members $_}

במאמר הקודם, הצגנו קובץ script של PowerShell המאפשר לך להעתיק חברות בקבוצת AD ממשתמש אחד ולהוסיף אחר לאותה רשימת קבוצות.

באפשרותך להשתמש בתכונת החברות הזמנית (מבוססת הזמן) בקבוצה ב- Active Directory עם סכימת Windows2016Forest ואילך. כדי להוסיף משתמש באופן זמני לקבוצת AD (לדוגמה, למשך שעה אחת), הפעל את הפקודה:

$ttl = New-TimeSpan -Minutes 60
Add-ADGroupMember -Identity "Domain Admins" -Members j.lennon -MemberTimeToLive $ttl

לאחר שעה, משתמש זה יוסר באופן אוטומטי מקבוצת אבטחה זו.

Remove-ADGroupMember: הסרת משתמשים מקבוצת AD באמצעות PowerShell

כדי להסיר משתמשים מהקבוצה AD, השתמש ב- cmdlet Remove-ADGroupMember. בוא נסיר שני משתמשים מהקבוצה:

Remove-ADGroupMember -Identity TestADGroup -Members user1, user2

אשר את הסרת המשתמש:

אם עליך להסיר משתמשים מקבוצה בהתאם לרשימת המשתמשים מקובץ CSV, השתמש בפקודה זו:

Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘TestADGroup’ -members $_.users}

לא ניתן להשתמש בקבוצות משתמשים דינאמיות ב- Active Directory מקומי (בניגוד ל- Azure AD). עם זאת, באפשרותך ליצור קובץ script מתוזמן של PowerShell שיוסיף או יסיר באופן אוטומטי משתמשים מקבוצה באמצעות

Add-ADGroupMember

ו

Remove-ADGroupMember

רכיבי cmdlet. למד עוד אודות יצירת קבוצות משתמשים דינאמיות ב- Active Directory באמצעות PowerShell.

מצא קבוצות Active Directory באמצעות Get-ADGroup

ה- cmdlet Get-ADGroup יעזור לך לקבל מידע אודות קבוצת התחומים AD:

Get-ADGroup 'TestADGroup'

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

Get-ADGroup 'TestADGroup' -properties *

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

באפשרותך להשתמש ב- cmdlet Get-ADGroup כדי לחפש קבוצות ב- AD לפי תבניות. לדוגמה, ניתן להשתמש בפקודות הבאות כדי למצוא את כל קבוצות המודעות המכילות את צירוף המילים מנהלים בשמם:

Get-ADGroup -LDAPFilter “(name=*admins*)” | Format-Table

או:

Get-ADGroup -Filter {name -like "*admins*"} -Properties Description,info | Select Name,samaccountname,Description,info

באמצעות Get-ADGroup, אתה יכול לקבל רשימה של חברי קבוצה (מאוחסנים בתכונה חברים):

Get-ADGroup -Identity "Domain Admins" -Properties members | Select-Object -ExpandProperty members

עם זאת, הרבה יותר נוח להשתמש ב- cmdlet Get-ADGroupMember כדי לקבל חברות בקבוצה.

Get-ADGroupMember: כיצד להשיג ולייצא חברי קבוצת Active Directory?

ה- cmdlet Get-ADGroupMember מאפשר לך לקבל את החברים בקבוצת AD. אלה יכולים להיות משתמשים, מחשבים, קבוצות אחרות או חשבונות שירות מנוהלים (MSA/gMSA).

Get-ADGroupMember 'TestADGroup'

כדי להציג רק שמות משתמש בתוצאות, הפעל:

Get-ADGroupMember 'TestADGroup'| ft name

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

Get-ADGroupMember ADadmins -recursive| ft name

כדי לייצא את רשימת החשבונות החברים בקבוצה מסוימת לקובץ CSV (לשימוש נוסף ב- Excel), הפעל את הפקודה הבאה:

Get-ADGroupMember 'ADadmins' -recursive| ft samaccountname| Out-File c:\PS\ADadminsList.csv

באפשרותך לייצא מידע אודות משתמשים בקבוצה לקובץ טקסט. ה- cmdlet Get-ADUser משמש לקבלת התכונות המורחבות של משתמש. לדוגמה, בנוסף לשם החשבון, באפשרותך להציג את UserPrincipalName, המיקום ומספר הטלפון של משתמשי הקבוצה:

Get-ADGroupMember -Identity ADadmins -recursive| foreach { Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone }

באפשרותך לספור את מספר המשתמשים בקבוצה כך:

(Get-ADGroupMember -Identity 'domain admins').Count

כדי לקבל את רשימת הקבוצות הריקות ב-OU ספציפי, השתמש בפקודה זו:

Get-ADGroup -Filter * -Properties Members -searchbase “OU=NY,OU-US,DC=corp,dc=a-d,DC=com”  | where {-not $_.members} | select Name

ניתן להשתמש ב- cmdlet Get-ADGroupMember כדי ליצור קובץ script פשוט של PowerShell המודיע למנהל מערכת שמישהו הוסיף משתמש חדש לקבוצת AD ספציפית.

Set-ADGroup: שינוי תכונות קבוצת Active Director

cmdlet Set-ADGroup מאפשר לך לשנות את המאפיינים (תכונות) של כל קבוצת Active Directory. לדוגמה, באפשרותך לשנות את התיאור והשם של קבוצה:

Set-ADGroup -Identity MunAdmins -Description “Munich Admins Group”

או:

Get-ADGroup -Identity MunAdmins | Set-ADGroup -Description “Munich Admins Group”

הסתרת קבוצה ספציפית מ- Exchange GAL:

Set-ADGroup -id MunAdmins -replace @{hideDLMembership=$true}

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

$attrs = @{"mail"="munadmins@a-d.site";"displayname"="ALL MUN Admins"}
Set-ADGroup -Identity MunAdmins -Add $attrs

ניתן לקבל רשימה של תכונות קבוצת AD עם

get-adgroup munadmins -Properties *

או מהכרטיסייה עורך תכונות במסוף ADUC.

Remove-ADGroup: כיצד למחוק קבוצה ב- Active Directory באמצעות PowerShell?

כדי להסיר קבוצות ב- Active Directory, השתמש ב- cmdlet Remove-ADGroup:

Remove-ADGroup -Identity MunSales

בעת מחיקת קבוצה, תתבקש לאשר את המחיקה. כדי להשבית את אישור ההסרה, הוסף את המתג אישור:

Remove-ADGroup -Identity MunSales -Confirm:$false

ניתן לשחזר קבוצות שהוסרו (ואובייקטים אחרים של AD) מסל המיחזור של Active Directory:

Get-ADObject -Filter {Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*MunSales*' } -IncludeDeletedObjects| Restore-ADObject -verbose