ניהול קבוצות AD עם Get-ADGroup ועוד

שימוש במודול ActiveDirectory PowerShell מאפשר לך לשאול את קבוצות ה-AD בעזרת `Get-AdGroup`, להוסיף, לעדכן ולהסיר קבוצות וחברים בקבוצה. בפוסט הזה, אתה הולך ללמוד קצת על פקודות ה- PowerShell שקשורות לקבוצות ב- Active Directory עם המון דוגמאות להתייחסות.

פקודות PowerShell של קבוצת Active Directory

לאחר שאתה מתקין את המודול ActiveDirectory PowerShell, יהיו לך מספר פקודות זמינות לניהול קבוצות.

Cmdlet Name Description
Add-ADGroupMember Used to add members to an AD group.
Add-ADPrincipalGroupMembership Used to add an AD principal to AD groups.
Get-ADGroup Used to return a group or groups from AD.
Get-ADGroupMember Used to return the members of an AD group.
Get-ADPrincipalGroupMembership Used to get the groups an AD principal is a member of.
New-ADGroup Used to create a new AD group.
Remove-ADGroup Used to delete an AD group.
Remove-ADGroupMember Used to remove members from an AD group.
Remove-ADPrincipalGroupMembership Used to remove an AD principal from AD groups.
Set-ADGroup Used to set the properties of an AD group.

על ידי שימוש בפקודות אלו וקצת PowerShell kung-fu, אתה יכול לנהל כל נושא של קבוצת Active Directory עם PowerShell.

מצא את חברי הקבוצה עם Get-ADGroupMember

פקודת ה-Get-AdGroupMember מחזירה את כל החברים בקבוצה.

PS51> Get-ADGroupMember -Identity <identity string or object>

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

שני דוגמאות מוצגות למטה.

PS51> Get-ADUser -Filter 'memberOf -eq ""'
PS51> Get-ADUser -LDAPFilter '(memberOf=)'

זה מחזיר אוסף של אובייקטים ADPrincipal.

ייצא את חברי הקבוצה לקובץ CSV.

מייצא את שמות המשתמשים הראשונים, שמות המשפחה וכתובות האימייל של כל משתמש. הובילו את התוצאות מGet-ADGroupMember אל Get-ADUser מכיוון שאלו אובייקטים ADPrincipal אשר אינם מכילים את כל המאפיינים של אובייקטי ADUser.

PS51> $GroupMembers = Get-ADGroupMember -Identity 'Professional Services Department'
PS51> $GroupMembers | Get-ADUser -Properties GivenName,Surname,Mail | Select-Object GivenName,Surname,Mail | Export-CSV -Path GroupMembers.CSV -NoTypeInformation

שימו לב לשימוש בפרמטר NoTypeInformation של Export-CSV כדי לוודא שקובץ ה-CSV תואם ליישומים אחרים.

מצאו קבוצות ללא חברים עם Get-ADGroup

השתמשו ב- Get-AdGroup כדי למצוא קבוצות באמצעות מסננים. שני דוגמאות מופיעות למטה.

PS51> Get-ADGroup -Filter "Members -notlike '*'"
PS51> Get-ADGroup -LDAPFilter "(!(member=*))"

צרו קבוצת אבטחה חדשה עם New-ADGroup

אתם יוצרים קבוצת אבטחה חדשה באמצעות פקודת New-AdGroup.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group> -Path '<path of the OU tht will host the new group>'

אם לא סופק הפרמטר Path, הקבוצה החדשה תיווצר בתקיית Users. ההיקף של הקבוצה חייב להיות DomainLocal, Global או Universal.

צרו קבוצת הפצה חדשה עם New-ADGroup

השתמשו שוב ב- New-AdGroup כדי ליצור קבוצת הפצה. הפעם, בחרו ב- GroupCategory של Distribution.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group>  -GroupCategory Distribution -Path '<path of the OU tht will host the new group>'

הוסיפו חברים לקבוצה עם Add-ADGroupMember

הוספת משתמשים לקבוצת Active Directory בעזרת PowerShell ניתן לבצע באמצעות הפקודה Add-AdGroupMember או הפקודה Add-ADPrincipalGroupMembership.

הפקודה הזו מציינת את הקבוצה כ- Identity.

PS51> Add-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>

הפקודה הזו מציינת את הראשי ה-AD כ- Identity.

PS51> Add-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

כתוב לתכונת Notes של קבוצה עם Set-AdGroup

השדה המסומן Notes ב-ADUC מיוצג על ידי התכונה Info שמוחזרת מ-Get-AdGroup.

בראשית, יש למצוא את הקבוצה שברצונך לשנות, להגדיר את התכונה Info ולאחר מכן להשתמש ב-Set-AdGroup כדי להחיות את השינוי ב-AD.

PS51> $group = Get-ADGroup -Identity <identity string or object>
PS51> $group.Info = 'Important notes on this group'
PS51> Set-ADGroup $group

הסרת חברי קבוצה עם Remove-ADGroupMember

כמו כל פקודות ה-PowerShell, ניתן להשתמש בפרמטר Confirm כדי לקבל בקשת אישור לפני ביצוע שינוי. התנהגות זו מתייחסת גם לפקודות ה-Remove-AdGroupMember ו-Remove-ADPrincipalGroupMembership.

מטה ניתן להסיר חברי קבוצה בלי אישור.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

או ניתן לבחור להסיר חברי קבוצה עם אישור באמצעות הפרמטר Confirm.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)> -Confirm
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)> -Confirm

מחיקת קבוצה עם Remove-ADGroup

ניתן למחוק קבוצה בלי אישור ועם אישור.

PS51> Remove-ADGroup -Identity <identity string or object>
PS51> Remove-ADGroup -Identity <identity string or object> -Confirm

שינוי שם של קבוצה עם Rename-ADObject

ניתן לשנות שם של קבוצה באמצעות שורת קוד אחת בעזרת Rename-ADObject.

PS51> Rename-ADObject -Identity <identity string or object> -NewName '<new name>'

קבלת מספר הקבוצות עם Get-ADGroup

האם תצטרך למצוא את המספר הכולל של הקבוצות שמוחזרות על ידי Get-AdGroup? ניתן להשתמש בתכונת Count.

PS51> (Get-ADGroup -Filter '*').Count

מציאת קבוצות עם מנהל עם Get-ADGroup

יש לסנן את כל הקבוצות שיש להן מנהל משויך אליהם עם Get-AdGroup וסינון מוכשר באמצעות סנן LDAP.

PS51> Get-ADGroup -LDAPFilter '(managedby=*)'

אין פילטר PowerShell שזהה לכך.

מצא קבוצות שניהגו על ידי משתמש ספציפי עם Get-ADGroup

שדרג את מיומנויות הסינון שלך ומצא את כל הקבוצות שניהגו על ידי משתמש ספציפי באמצעות סינון PowerShell או סינון LDAP.

PS51> Get-ADGroup -Filter 'managedby -eq "<distinguished name of user>"'
PS51> Get-ADGroup -LDAPFilter '(managedby=<distinguished name of user>)'

הגדר את מנהל הקבוצה עם Set-ADGroup

לשונית ניהול על ידי ב- ADUC לקבוצות מאפשרת לך לקבוע מישהו שאחראי על חברי הקבוצה. זה לא אומר אוטומטית שהמנהל יכול לשנות את חברי הקבוצה. כדי שזה יהיה אפשרי, יש לשנות את ההרשאות האבטחה על מאפיין חבר של הקבוצה בשאלה.

לסימון המנהל יכול לעדכן את רשימת החברים עבור קבוצה ב- Active Directory Users and Computers (ADUC) משנה את ההרשאות כך שזה יהיה אפשרי.

Managed By tab in Active Directory Users and Computers

השתמש ב- Set-ADGroup כדי להגדיר את המאפיין ניהול על ידי:

PS51> Set-ADGroup -ManagedBy '<distinguished name, GUID, SID or SAM Account name of manager>'

עדכון של רשימת הבקרה לגישה דורש כמה שלבים נוספים. קטע הקוד הבא מעניק למשתמש Kristin Diaz את היכולת לנהל את חברי הקבוצה. bf9679c0-0de6-11d0-a285-00aa003049e2 הוא ה-GUID עבור מאפיין חבר של הקבוצה.

אם גם Kristin מוגדרת כמנהלת הקבוצה, אז התיקייה תיסמן. אם לא, Kristin עדיין תוכל לנהל את חברי הקבוצה אך לא תוצג ב- ADUC כמנהל.

מצא סיסמאות שחודרו ואינן בטוחות בכתובת ה-Active Directory שלך על ידי בדיקה נגד רשימת הסיסמאות של ה-NCSC.

$group = Get-ADGroup -Identity 'Professional Services Department'
$manager = Get-ADUser -Identity 'Kristin.Diaz'
$NTPrincipal = New-Object System.Security.Principal.NTAccount $manager.samAccountName
$objectGUID = New-Object GUID 'bf9679c0-0de6-11d0-a285-00aa003049e2'
$acl = Get-ACL "AD:$($group.distinguishedName)"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $NTPrincipal,'WriteProperty','Allow',$objectGUID
$acl.AddAccessRule($ace)
Set-ACL -AclObject $acl -Path "AD:$($group.distinguishedName)"

מצא את כל קבוצות האבטחה

רשום את כל קבוצות האבטחה ב-Active Directory בעזרת PowerShell על ידי הגבלת שאילתת החיפוש שלך לקבוצות אבטחה בלבד עם שני הדוגמאות האלה. מהו הפילטר LDAP ההוא, אתה שואל? למד את כל הקשור לפילטרים של LDAP.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Security"'
PS51> Get-ADGroup -LDAPFilter '(groupType:1.2.840.113556.1.4.803:=2147483648)'

מצא קבוצות הפצה

השתמש ב-PowerShell כדי לרשום קבוצות Active Directory (הפצה) המונעות קבוצות אבטחה באמצעות שתי הדוגמאות האלה.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Distribution"'
PS51> Get-ADGroup -LDAPFilter '(!(groupType:1.2.840.113556.1.4.803:=2147483648))'

מצא את חברות הקבוצה של משתמש עם Get-ADPrincipalGroupMembership

PS51> Get-ADPrincipalGroupMembership -Identity <identity string or object>

שים לב שפקודה זו דורשת גישה לקטלוג גלובלי.

מצא קבוצות בארגון יחיד, ללא תתי-יחידות

השתמש בפרמטר SearchBase להגבלת החיפוש שלך ליחידת ארגון אחת בעזרת שתי הדוגמאות האלה.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel

מצא קבוצות בארגון יחיד, כולל כל התתי-יחידות

האם אתה צריך למצוא את כל הקבוצות בתתי-יחידות? השתמש ב-SearchScope של SubTree.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope SubTree
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope SubTree

סיכום

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

Source:
https://adamtheautomator.com/get-adgroup/