إدارة مجموعات AD باستخدام Get-ADGroup والمزيد

باستخدام وحدة ActiveDirectory PowerShell، يمكنك الاستعلام عن مجموعات AD باستخدام Get-AdGroup، وإضافة، وتحديث، وإزالة المجموعات وأعضاء المجموعة. في هذا المنشور على المدونة، ستتعلم قليلاً عن أدوات سطر الأوامر PowerShell لمجموعة Active Directory مع الكثير من الأمثلة للرجوع إليها.

أدوات سطر الأوامر لمجموعة 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

يمكن إضافة المستخدمين إلى مجموعة الدليل النشط باستخدام 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

تسمح لك علامة التبويب Managed By في ADUC للمجموعات بتحديد شخص مسؤول عن عضوية المجموعة. ولكن هذا لا يعني تلقائيا أن المدير يمكنه تعديل عضوية المجموعة. يجب تغيير أذونات الأمان على خاصية Member للمجموعة المعنية لجعل ذلك ممكنًا.

تحديد خانة الاختيار Manager can update membership list لمجموعة في Active Directory Users and Computers (ADUC) يغير الأذونات للسماح بذلك.

Managed By tab in Active Directory Users and Computers

استخدم Set-ADGroup لتعيين الخاصية ManagedBy:

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

يتطلب تحديث قائمة التحكم في الوصول بضع خطوات إضافية. يمنح الكود البرمجي التالي المستخدم Kristin Diaz القدرة على إدارة عضوية المجموعة. bf9679c0-0de6-11d0-a285-00aa003049e2 هو معرف GUID لخاصية Member للمجموعة.

إذا تم تعيين Kristin كمدير أيضًا للمجموعة ، فسيتم تحديد خانة الاختيار. إذا لم يكن 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/