ניהול קבוצות 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









