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 وحسابات المستخدمين
- يجب أن يكون لديك وحدة powershell active directory مثبتة
تعلم الأساسيات
للاستعلام عن مجموعات ad وأعضاء المجموعة ، لديك جملتي powershell المتاحتين – get-adgroup
و get-adgroupmember
.”
Get-ADGroup
تستعلم عن مراقب المجال وتعيد كائنات مجموعة AD. Get-AdGroupMember
تبحث داخل كل مجموعة وتعيد جميع حسابات المستخدمين والمجموعات وجهات الاتصال والكائنات الأخرى التي توجد في تلك المجموعة.
الحصول على مجموعات AD
للعثور على مجموعات AD باستخدام PowerShell ، يمكنك استخدام cmdlet Get-ADGroup
. بدون معلمات ، ستستعلم Get-ADGroup
AD وتعيد جميع المجموعات في مجال باستخدام معلمة Filter
. معلمة Filter
مطلوبة. إنها موجودة لتقييد المجموعات المعادة استنادًا إلى معايير مختلفة.
على سبيل المثال ، للعثور على جميع المجموعات دون مراعاة أي معايير ، استخدم Get-ADGroup
وحدد علامة الاسترسال (نجمة) لمعلمة Filter
. يمكنك رؤية مثال أدناه. قد يستغرق التمرير من خلال جميع هذه المجموعات وقتًا إذا كان لديك مئات أو حتى آلاف في مجالك.
إذا كنت بحاجة إلى العثور على مجموعة واحدة ، يمكنك استخدام معلمة Identity
.
معلمة Identity
هي معلمة شائعة بين جميع cmdlets PowerShell Active Directory. يتيح لك تقييد استعلامك إلى كائن AD واحد. على سبيل المثال ، إذا كنت بحاجة للتحقق مما إذا كانت هناك مجموعة تسمى HR موجودة ، يمكنك معرفة ذلك عن طريق تشغيل الأمر أدناه.
الحصول على أعضاء مجموعة AD مع Get-AdGroupMember
استخدام PowerShell لعرض أعضاء مجموعة AD يتطلب cmdlet Get-ADGroupMember
. يحصل هذا الأمر على مستخدمين ومجموعات وكائنات كمبيوتر في مجموعة معينة. ربما تحتاج إلى العثور على جميع أعضاء مجموعة المسؤولون. في أبسط صورتها، ستستخدم معلمة Identity
مرة أخرى محددة اسم المجموعة كما هو موضح أدناه.
لاحظ أن
Get-AdGroupMember
يعيد فقط عضوية المجموعة للمستخدمين والمجموعات والكمبيوترات. لن يعيد كائنات AD الأخرى مثل جهات الاتصال.
تعداد أعضاء المجموعة داخل أعضاء المجموعة
كما قد تعلم، تحتوي مجموعات AD ليس فقط على حسابات المستخدمين ولكن أيضًا على مجموعات أخرى تُسمى أيضًا تضمين. عندما تكون مجموعة مدرجة داخل مجموعة أخرى، يرث أعضاء تلك المجموعة نفس الأذونات المخصصة للمجموعة الأم.
بشكل افتراضي، لا يعيد cmdlet PowerShell Get-AdGroupMember
أعضاء المجموعات المتداخلة. لمعالجة ذلك، يمكنك استخدام معلمة Recursive
. على سبيل المثال، يمكنك العثور على أعضاء المجموعات المتضمنة داخل مجموعة الموارد البشرية باستخدام معلمة Recursive
كما هو موضح أدناه.
الحصول على مجموعات/أعضاء متعددة في وقت واحد
إذا كنت بحاجة إلى الاستعلام عن AD لعدد كبير من المجموعات أو أعضاء المجموعات في وقت واحد، يمكنك أيضًا القيام بذلك باستخدام حلقة الـ PowerShell foreach. تقوم حلقة foreach بتشغيل أمر أو كود لكل عنصر في مجموعة. في هذه الحالة، ستكون تلك المجموعة قائمة بأسماء المجموعات.
ربما تحتاج إلى العثور على جميع أعضاء المجموعة في مجموعات الموارد البشرية، المحاسبة، و تقنية المعلومات. للقيام بذلك، ستقوم أولاً بإنشاء مجموعة أو مصفوفة من أسماء هذه المجموعات. يحدد المثال أدناه هذه المجموعة بوصفها $groupNames
. ثم، لكل اسم في تلك المجموعة، قم بتشغيل Get-ADGroupMember
وتوفير اسم كل مجموعة لمعلمة Identity
.
يمكنك بدلاً من ذلك استخدام
ForEach-Object
cmdlet لتكرار المجموعات.
استخدام بيانات الاعتماد البديلة
مثل العديد من سائر أوامر PowerShell، تحتوي أوامر AD group cmdlets على معلمة Credential
. بشكل افتراضي، عند تشغيل أمر AD group cmdlet، يستخدم بيانات الاعتماد الخاصة بك لتحقيق الاتصال بدليل Active Directory. يتطلب هذا السلوك أن تكون على جهاز متصل بالنطاق مسجل الدخول كمستخدم Active Directory لديه الإذن.
ولكن ماذا لو كنت على جهاز عمل جماعي أو تحتاج إلى المصادقة على AD كمستخدم مختلف؟ في هذه الحالة، يمكنك استخدام معلمة Credential
. تتيح لك هذه المعلمة تحديد اسم مستخدم وكلمة مرور لاستخدامها في عملية المصادقة.
على سبيل المثال، ربما لا يكون لحساب المستخدم الخاص بك الحق في أداء مهمة AD. لديك حساب خدمة بحقوق إضافية. يمكنك تسجيل الدخول كمستخدم عادي ومع ذلك المصادقة بحساب الخدمة كما هو موضح أدناه.
أمر Get-Credential
يطلب اسم مستخدم/كلمة مرور لإنشاء اعتماد. يتم تمرير هذا الاعتماد بعد ذلك إلى أمر Get-AdGroup
للمصادقة.
معلمة
Credential
هي عالمية في PowerShell لتوفير اعتمادات المصادقة. لمزيد من المعلومات، اقرأ استخدام أمر PowerShell Get-Credential وكل شيء عن الاعتمادات.
الحصول على أعضاء المجموعة باستخدام Get-ADGroup؟
قد يبدو الأمر متناقضًا ولكن يمكنك أيضًا الحصول على أعضاء المجموعة باستخدام أمر Get-ADGroup
أيضًا.
يتضح أن Get-ADGroup
يُرجع خاصية تسمى members
لكل مجموعة. هذه مجموعة من كائنات AD التي هي أعضاء في المجموعة.
على سبيل المثال، للعثور على أعضاء المجموعة في تلك المجموعة HR مرة أخرى دون استخدام Get-ADGroupMember
، يمكنك القيام بشيء مثل هذا:
لماذا استخدام هذه الطريقة عوضاً عن الأخرى؟ الفرق الرئيسي هو أن خصائص members
تحتوي على جميع أنواع الكائنات النشطة – ليس فقط المستخدمين والكمبيوترات والمجموعات الأخرى.
ربما لديك جهات اتصال داخل مجموعات مختلفة. عند تشغيل Get-ADGroupMember
، لن تظهر تلك الجهات الاتصال. ولكن إذا قلت Get-ADGroup
بإرجاع جميع الأعضاء في تلك المجموعة مع توسيع تلك المجموعة كما هو موضح أدناه، سترى الجهات الاتصال.
العثور على سمات AD محددة
في القسم الأساسي أعلاه، كنت ببساطة تقوم بإرجاع كافة المجموعات وأعضاء المجموعات. المعلومات المُرجعة لكل مجموعة وعضو في المجموعة هي فقط جزء من السمات المرتبطة بكل نوع من الكائن.
ربما ترغب في رؤية عنوان بريد الكتروني لحساب مستخدم، تاريخ آخر تسجيل دخول، أو سمة AD مرتبطة أخرى؟ للقيام بذلك، ستحتاج إلى أن تكون مبدعاً.
ربما تمكنت من العثور على جميع أعضاء المجموعة في HR ولكنك بحاجة أيضاً لرؤية عنوان بريد كل حساب مستخدم؟
تصفية النتائج
حتى هذه اللحظة، لقد وجدت جميع المجموعات وأعضاء المجموعات، ولكن في بيئة عمل يومية، نادراً ما تحتاج إلى ذلك. من المحتمل أن تحتاج إلى العثور فقط على عدد محدود من كل عنصر. لأوامر الأداة لإدارة المجموعات النشطة، هناك بعض الطرق التي يمكنك استخدامها للتعامل مع هذا.
المعلمة Filter
كما ذكرت سابقاً، تحتوي كلتا الأداتين على المعلمة Filter
. تسمح هذه المعلمة لك بتحديد ما يتم إرجاعه بطرق متعددة خارج نطاق هذا المقال.
باستخدام معلمة Filter
، يمكنك تقييد النتائج حسب أي سمة AD مثل الاسم، نوع المجموعة، عنوان البريد الإلكتروني، آخر تسجيل دخول للمستخدمين وما إلى ذلك.
على سبيل المثال، ربما ترغب في العثور فقط على مجموعات الأمان. في هذه الحالة، ستحدد سمة GroupCategory
وتضع شرطًا لضمان عودة فقط مجموعات Security
.
ربما ترغب في العثور على جميع مجموعات الأمان ولكن يجب أن لا تكون مجموعات محلية للنطاق. في هذه الحالة، ستضيف شرطًا آخر (هذه المرة باستخدام المشغل -ne
) لمنع عودة أي مجموعات محلية للنطاق.
إذا كنت ترغب في تعلم كيفية إنشاء عوامل تصفية الاستعلام، تأكد من مراجعة تعلم تصفية Active Directory و LDAP في PowerShell.
تقييد نتائج المجموعة حسب الوحدة التنظيمية (OU)
ربما لديك مجموعات مختلفة متداخلة في وحدات تنظيمية. قد لا ترغب بالضرورة في العثور على جميع المجموعات ولكن فقط المجموعات في وحدة تنظيمية معينة. في هذه الحالة، يمكنك استخدام معلمة SearchBase
.
تسمح معلمة SearchBase
لك بتحديد اسم توثيق OU (DN) لبدء البحث عن المجموعات فيه. على سبيل المثال، ربما لديك OU تسمى المواقع في جذر النطاق الخاص بك. في OU المواقع، لديك كل OU موقع مثل أوستن، نيويورك، و لوس أنجلوس. أنت تبحث فقط عن المجموعات في OU نيويورك وتحتاج إلى تقييد رؤية الآخرين.
يتم عرض هيكل OU AD مثاليًا أدناه. لاحظ أن مجموعات أخرى موجودة خارج OU المواقع.
ربما تحتاج إلى العثور على جميع مجموعات AD التي توجد فقط في وحدة التنظيم NYC. لتقييد الاستعلام، ستستخدم المعلمة SearchBase
وتقديم DN كما هو موضح أدناه. يتم إرجاع جميع المجموعات داخل وحدة التنظيم المواقع.
لكن الآن تحتاج إلى العثور على كل المجموعات في جميع وحدات التنظيم تحت وحدة التنظيم المواقع. Get-ADGroup
يعيد فقط المجموعات في وحدة التنظيم المواقع نفسها – وليس في وحدات التنظيم الفرعية.
لإرجاع المجموعات داخل وحدات التنظيم الفرعية، ستحتاج إلى استخدام معلمة SearchScope
. هذه المعلمة مشابهة لمعلمة Recursive
في أنها ستفحص الكائنات الفرعية أيضًا.
على سبيل المثال، للعثور على جميع المجموعات في أي وحدة تنظيم تحت وحدة التنظيم المواقع، حدد Subtree
أو 2
. يخبر هذا القيمة لمعلمة SearchScope
Get-ADGroup
بالنظر بشكل متكرر إلى جميع الأطفال والأحفاد والوحدات التنظيمية الأخرى.
للحصول على فهم كامل لخيارات معلمة SearchScope
، راجع وثائق Get-ADGroup
.
تصدير مجموعات AD وأعضائها
لقد عرفت أخيرًا كيفية الاستعلام وإرجاع المجموعات وأعضاء المجموعات التي تحتاج إليها. يتم إرسال كل هذه المعلومات إلى وحدة التحكم PowerShell. ولكن الآن تحتاج إلى الحصول على هذه المعلومات في ملف CSV أو جدول بيانات Excel.
الشيء الوحيد الذي تحتاج إليه الآن هو إرسال كل تلك المعلومات إلى ملف.
التصدير إلى ملف CSV
أحد الأشكال الشائعة لتصدير معلومات AD إلى هو ملف CSV. تحتوي PowerShell على أداة مفيدة تسمح لك بإنشاء ملفات CSV بسهولة من إخراج PowerShell تسمى Export-Csv
.
يمكنك إنشاء ملف CSV من أي أمر مشمول في هذه المقالة عن طريق توجيهه إلى Export-Csv
. باستخدام المثال أدناه، سيقوم بإعادة توجيه جميع الإخراج الذي كان سيعود به Get-AdGroup
إلى وحدة التحكم، إلى ملف CSV بدلاً من ذلك.
لمزيد من المعلومات حول هذا الأداة المفيدة، تفضل بزيارة Export-Csv: الطريقة في PowerShell لمعاملة ملفات CSV كمواطنين من الدرجة الأولى.
يمكنك أيضًا تصدير النتائج بسهولة إلى CSV عبر أمر Get-AdGroupMember
.
التصدير إلى Excel
PowerShell ليس لديه طريقة أصلية لتصدير المعلومات إلى Excel. ولكن يمكنك دائمًا تنزيل الوحدة المجتمعية المجانية المسماة ImportExcel. توفر هذه الوحدة قدرات تصدير شبيهة بـ CSV مباشرة إلى أوراق عمل Excel. لتثبيت وحدة PowerShell، قم بتشغيل Install-Module ImportExcel -Scope CurrentUser
.
باستخدام المثال أعلاه، بدلاً من ملف CSV، إذا كنت بحاجة إلى تصدير المجموعات إلى ورقة عمل Excel، فستستخدم أمر Export-Excel
كما هو موضح أدناه.
العثور على كلمات مرور تسربت وغير آمنة في النشاط الخاص بك في Active Directory عن طريق التحقق من قائمة كلمات المرور NCSC.
الوحدة ImportExcel لديها الكثير من الوظائف للعمل مع Excel. إذا كنت بحاجة إلى ورقة عمل أكثر تطورًا، فمن المحتمل أن تحتوي على وظيفة لك.
لمزيد من المعلومات حول استخدام وحدة ImportExcel، اقرأ هذا المقال. يقدم مقدمة رائعة لبعض الحالات الشائعة التي يمكنها التعامل معها.
إدارة وتقرير دليل النشاط وExchange وMicrosoft 365 باستخدام ManageEngine ADManager Plus. قم بتنزيل النسخة التجريبية المجانية!
الختام
باستخدام أمرين فقط في PowerShell، يمكنك القيام بأي شيء تقريبًا مع مجموعات AD. كان هذا المقال مجرد مقدمة للوظائف المتاحة لك. استخدم المعرفة التي تم جمعها هنا، واتبع بعض الروابط للانغماس في مواضيع أعمق في المقال وشاهد ما يمكنك بناؤه!