Get-AdUser: كيفية تدقيق مستخدمي Active Directory باستخدام باورشيل

باور شيل هو أداة أساسية لمسؤولي تكنولوجيا المعلومات، ويجعل من السهل تدقيق حسابات مستخدمي Active Directory باستخدام الأمر Get-AdUser. في هذا الدليل، سنوضح كيفية البدء باستخدام أمر Active Directory الشهير.

مقدمة لأمر Get-AdUser في PowerShell

الأمر Get-AdUser هو واحد من أشهر الأوامر في PowerShell لـ Active Directory. يسمح لك بالحصول على كائن مستخدم محدد، أو يتيح لك إجراء بحوث قابلة للتخصيص للحصول على عدة كائنات مستخدم.

الإعلان

يُستخدم المعلمة Identity لتحديد المستخدم في Active Directory الذي يجب الحصول عليه. لديك عدة خيارات حول كيفية تحديد المستخدم:

  • يمكنك استخدام اسمه المميز (DN)، GUID، معرف الأمان (SID)، أو اسم حساب مدير الحسابات الأمنية (SAM).
  • يمكنك أيضًا تعيين المعلمة إلى متغير كائن المستخدم مثل $UserA أو تمرير كائن مستخدم من خلال خط الأنابيب إلى معلمة Identity.

يمكنك استخدام المعلمة Filter أو المعلمة LDAPFilter للبحث عن والحصول على أكثر من مستخدم، تستخدم المعلمة Filter لغة التعبير عن السلطة (PSL) في استعلام Active Directory.

يوفر تركيب لغة التعبير PowerShell دعمًا غنيًا لتحويل الأنواع للقيم التي يقبلها المعلم الخاص بالمعلم Filter. إذا كان لديك بالفعل سلاسل استعلام بروتوكول الوصول إلى الدليل الخفيف (LDAP) ، استخدم المعلم LDAPFilter بدلاً من ذلك.

إذا لم يتم تعيين معلمات بوضوح ، فإن Get-AdUser يعرض مجموعة افتراضية من خصائص كائن المستخدم. لاسترجاع خصائص إضافية ، استخدم المعلم Properties. سنتطرق إلى بعض المعلمات التي يمكنك استخدامها في وقت لاحق في هذه المقالة.

إعلان

كيفية استخدام Get-AdUser والمتطلبات المسبقة

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

من أجل الاختصار ، سأقوم بشرح الطريقتين الأكثر انتشارًا التي من المحتمل أن تتبعهما كمسؤول أو محترف تكنولوجيا المعلومات يدير Active Directory الخاص بك في الموقع.

أولًا ، يمكنك استخدام الأمر PowerShell التالي لتثبيت أداة Remote Server Administration Tools (RSAT) مباشرةً من تحديث Windows.

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

الطريقة الثانية هي استخدام تطبيق الإعدادات لتثبيت أداة RSAT مباشرة. انقر ابدأ-> الإعدادات -> التطبيقات -> الميزات الاختيارية -> إضافة ميزة -> وضع علامة اختيار في خيار RSAT: Active Directory Domain Services and Lightweight Directory Services Tools.

الإعلان

انقر على الزر تثبيت.

كيفية العثور على حساب مستخدم AD باستخدام المعلمة -Identity

حسنًا، دعنا نبدأ باستخدام الأمر ونريك كيف يمكنني مساعدتك في أن تصبح أكثر كفاءة (وسرعة!) في الحصول على المعلومات التي تحتاج إليها. أعمل في بيئة استكشافية Hyper-V لنظام Windows Server 2022 Active Directory، وأنا مسجل الدخول إلى جهاز كمبيوتر افتراضي Windows 10 21H1 (VM). بحثت في قائمة البدء عن ‘Active Directory Module for Windows PowerShell’ وفتحتها عبر ‘تشغيل كمسؤول’.

Active Directory Module for Windows PowerShell

أولًا، دعني أجد مستخدم مجال استنادًا إلى سمة sAMAccountName

Get-ADUser breinders
Finding a user account via their sAMAccountName

ها هو. يمكننا الآن استخدام سمة objectGUID (أو GUID) للعثور على مستخدم. لنجرب:

Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250
Finding an account via their objectGUID (GUID)

أهلاً، نفس حساب المستخدم. ممتاز. يمكننا أيضًا البحث عن مستخدم بناءً على معرف الأمان الخاص بهم Security Identifier، أو SID.

Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107
Finding an account via their Security IDentifier (SID)

نعم، قليلاً متكرر، ولكنك تفهم النقطة. يمكنك أيضًا استخدام اسم العائلة، الاسم، UserPrincipalName، وغيرها للمستخدم.

استخدام عامل Get-AdUser

في بيئات أكبر، لا أوصي بكتابة ‘Get-AdUser’ بمفرده حيث سيبدأ في استرداد جميع كائنات المستخدمين في مجال AD المرتبط بك. لن يبدأ هذا فقط في غمر وحدة التحكم الخاصة بك بالبيانات، ولكنه قد يضع ضغطًا ملحوظًا على أي مراقب نطاق يستخدمه جهاز العمل الخاص بك.

لو كان بإمكاننا تصفية قاعدة المستخدمين بأكملها والبحث عن مستخدمين محددين بناءً على بعض الخصائص. حسنًا، هذا بالضبط لماذا تم إنشاء المعلمة ‘-filter’!

تحدد معلمة ‘-filter’ سلسلة استعلام تسترد كائنات AD. تستخدم هذه السلسلة بنية لغة التعبير باورشيل (PEL). توفر بنية PEL دعمًا غنيًا لتحويل الأنواع القيمية التي تتلقاها المعلمة Filter. تستخدم البنية تمثيلًا تسلسليًا، مما يعني أن المشغل يتم وضعه بين العامل والقيمة. دعنا نستعرض بعض الأمثلة لنقدم لك فكرة أفضل.

أولاً، دعنا نكتشف جميع الحسابات التي هي ‘ممكّنة’.

Get-ADUser -filter {Enabled -eq "true"} | ft
Locating all the enabled accounts

نحن نستخدم تلك الصيغة الرائعة لـ PEL للعثور على جميع الحسابات التي تحتوي على حقل “Enabled” يساوي True. نقوم أيضًا بتوجيه الإخراج باستخدام أمر Format-Table PowerShell cmdlet لتنسيق العرض بشكل أسهل للقراءة.

المرة القادمة، دعنا نعرض جميع المستخدمين الذين لديهم عنوان بريد إلكتروني.

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail
Finding all the user accounts with an email address

أولًا، لاحظ أننا نستخدم معلمة ‘-filter’ لتضمين حسابات المستخدمين التي لا تحتوي على عنوان بريد ‘null’. أو ببساطة، جميع الحسابات التي تحتوي على عنوان بريد. أعرف، أحيانًا يكون من الصعب التفكير مثل الكمبيوتر.

ثانيًا، نحن نركز على ثلاث خصائص الاسم، الاسم المعطى، والبريد (عنوان البريد الإلكتروني). نستخدم Format-Table ونقوم بقائمة هذه الخصائص. سهل جدًا!

قد ترغب أيضًا في مراجعة حساباتك من منظور أمني. يمكنك أيضًا استخدام معلمة ‘-filter’ للعثور على جميع الحسابات التي تحتوي على سمة ‘passwordneverexpires’. هذا عمومًا ليس مستحسنًا.

Get-AdUser where name like؟

ميزة أخرى رائعة هي استخدام مختلف المعلمات مع ‘-filter’ للعثور على المستخدمين الذين يطابقون الخصائص المختلفة لكائن مستخدم AD. على الرغم من أن بيئة المختبر الخاصة بي صغيرة للغاية وتحتوي فقط على حوالي عشرة حسابات مستخدمين، يمكن أن تظهر القدرة والمرونة في العثور بسرعة على الحسابات التي تبحث عنها. هنا، دعنا نعثر على جميع المستخدمين الذين يحتوون على ‘Reinders’ في أسمائهم.

Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

نحن نستخدم معلمة “الاسم” ونبحث عن جميع الحسابات التي تحتوي على “رايندرز” في أي مكان في الاسم. يمكن أن يكون اسمهم الأول، أو اسمهم الأخير، وحتى اسم وسط إذا تم إدخاله. إذا كنت ترغب فقط في العثور على مستخدمين يحملون “رايندرز” كاسم الأخير، غيّر حقل -like ليكون “*Reinders” (لاحظ، لا يوجد رمز النجمة (*) في نهاية الحقل).

تحديد نطاق البحث في Get-AdUser بواسطة وحدة التنظيم

إذا كان لديك نطاق/شركة كبير نسبيًا، قد تواجه أوقات استعلام أطول عند تشغيل هذه الأوامر، أو تأثيرات أداء غير ضرورية على مراقبي نطاقاتك. دعنا نتحدث عن تحديد نطاق هذه البحوث لوحدة تنظيمية محددة (OU).

يمكننا استخدام معلمة ‘-SearchBase’ وتحديد OU (أو OUs متعددة) باستخدام الصيغة التالية.

Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress
Here, we’re limiting the search scope to the ‘Test Users’ Organization Unit (OU)

هنا، نقوم بتحديد نطاقنا لجميع المستخدمين في OU “مستخدمي الاختبار”، ثم نقوم بإخراج أسمائهم وعناوين البريد الإلكتروني بتنسيق جدول.

استخدام Get-AdUser بأوراق اعتماد بديلة

افتراضيًا، يتم تشغيل cmdlet Get-AdUser بسياق المستخدم المسجل حاليًا. إذا كنت ترغب في تشغيل الأمر باستخدام أوراق اعتماد بديلة، يمكنك استخدام متغيرا، وتخزين أوراق الاعتماد البديلة في هذا المتغير، ثم تشغيل الأمر باستخدام التبديل ‘-Credential’.

$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

مرة أخرى، بسيطة وسهلة!

العمل مع معلمة الخصائص في Get-AdUser

I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.

معلمة “-Properties” تحدد الخصائص لكائن الإخراج التي يتم استرجاعها من الخادم. بشكل افتراضي، إذا لم تستخدمها، ستُرجع وتُعرض عشرة خصائص. أمثلة على ذلك هي الاسم المميز، ما إذا كان الحساب ‘مُمكّن’ أو ‘مُعطّل’، الاسم الأول للمستخدم، الاسم، الجهاز العالمي المعرف (GUID)، وخصائص أخرى أكثر تشبه النظام. لكن هناك العديد من الخصائص المتاحة. استخدم هذه المعلمة لاسترجاع الخصائص التي لم يتم تضمينها في المجموعة الافتراضية.

حدد الخصائص لهذه المعلمة كقائمة مفصولة بفاصلة. لعرض جميع السمات التي تم تعيينها على الكائن، حدد * (نجمة).

للوصول إلى هذه الخصائص الأخرى، ما عليك سوى تحديدها؛ استخدم اسم الخاصية. بالنسبة للخصائص التي ليست افتراضية أو خصائص موسعة، يجب عليك تحديد اسم العرض لبروتوكول الوصول إلى الدليل الخفيف (LDAP).

لنتطرق إلى بعض الأمثلة.

Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet
Displaying all users with the date and time their password was last set/reset

المثال أعلاه يُظهر جميع المستخدمين في النطاق مع أسمائهم وتاريخ/وقت آخر تعيين/إعادة تعيين لكلمة المرور الخاصة بهم.

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated
Another nice feature is listing every user’s Creation Date in Active Directory

هذا يُظهر متى تم إنشاء الحساب في Active Directory. لنُنهي هذا باستعلام لجلب الاسم، القسم، والمدير لكل حساب.

Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager
Listing the Department and the Manager of each user, if they’re populated in Active Directory

مثال نهائي واستخدام رائع لأمر Export-Csv. إذا كنت بحاجة للحصول على قائمة بجميع المستخدمين في نطاق معين وتضمين جميع الخصائص، فقم بتشغيل هذا الأمر لتصدير كل ذلك إلى ملف CSV ملائم.

Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv

الملخص

I hope you gained some knowledge about how to use the Get-AdUser PowerShell command. This really scratches the surface, however, this is one aspect I like about the power of PowerShell: Learning about the core properties of a cmdlet and extrapolating it out to your organization.

غالبًا ما يكون من السهل للغاية التفكير في العديد من حالات الاستخدام التي يمكنك استخدام هذا الأمر لحل مشكلة، وإنشاء بعض الوثائق للمهندسين الآخرين، والمساعدة في عمليات الاستكشاف العامة. يمكن أن يكون هذا مفيدًا للغاية. وبالطبع، استخدام بعض هذه الأوامر لإنشاء سكربت PowerShell… يعزز دائمًا الكفاءة!

لا تتردد في ترك أي أسئلة أو تعليقات أدناه.

المقال المتعلق:

Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/