كيفية العثور على المستخدمين المقفلين في Active Directory باستخدام PowerShell

ليس من المحتمل أن ينسى المستخدمون في منظمتك كلمات المرور، أليس كذلك؟ هل قام مستخدم في Active Directory بقفل حسابه؟ بالطبع لا! دعنا نرى ما يمكننا فعله للعثور على المستخدمين المقفلين في Active Directory باستخدام PowerShell!

توقف عن التعثر في مكالمات إعادة تعيين كلمة المرور وقفل الحسابات في Active Directory. احصل على فترة تجريبية مجانية لـ Specops uReset.

هل تعرضت شبكتك يومًا ما للإصابة ببرمجيات ضارة تحاول التوثيق باستخدام أكبر عدد ممكن من حسابات المستخدمين في النطاق؟ آمل أن لا يحدث ذلك، ولكن رأيت حدوثه عدة مرات. المستخدمون والديدان هما سببان فقط من الأسباب التي قد تؤدي إلى قفل حساب واحد أو أكثر في Active Directory. وبناءً على سياسة كلمة المرور الخاصة بك، قد تحدث القفلات بشكل يومي أو قد تحدث بين الحين والآخر.

بغض النظر عن السبب أو الوضع، تؤثر قفل الحسابات على مستخدميك. نظرًا لأنهم يعتمدون على حساب نطاق Active Directory الخاص بهم لتقريبًا كل شيء، فسيلاحظون على الفور عندما يتم قفله. يمكن لفريق مساعدتك في تمكين الحساب مرة أخرى، لكن ماذا لو حدث ذلك مرة أخرى؟ … ومرة أخرى. … ومرة أخرى. إيجاد سبب هذه المشكلة الجذرية أمر مهم.

وسيلة واحدة للقيام بذلك هي استخدام PowerShell ووحدة ActiveDirectory. من خلال استخدام أمر Search-AdAccount داخل وحدة Active Directory ، يمكنك بسهولة تتبع جميع الحسابات التي تم قفلها حاليًا عبر النطاق الخاص بك.

ذات الصلة: كيفية تثبيت وحدة Active Directory PowerShell

العثور على المستخدمين المقفلين في Active Directory باستخدام PowerShell

للبحث عن الحسابات المقفلة ، يمكنك تشغيل أمر Search-AdAccount باستخدام المعلمة LockedOut. سيعيد هذا جميع المستخدمين المقفلين حاليًا بشرط أن لديك الحق في رؤيتهم.

Search-AdAccount -LockedOut

هذا الأمر رائع ولكن ماذا لو كان لديك حساب يتم قفله باستمرار وتحتاج إلى معرفة من أي نظام يأتي ذلك؟ هذه مهمة شائعة عندما تكون هناك عدوى برامج ضارة في مكان ما في شبكتك أو ربما عندما يكون لديك مسؤول نسياني نسي أن يسجل خروج من جلسة سطح المكتب البعيدة. هل حدث ذلك من قبل، أليس كذلك؟

للعثور على مصدر قفل Active Directory ، ستحتاج أولاً إلى التأكد من أنك تستعلم عن الخادم الصحيح للمجال. في هذه الحالة ، سيكون هذا هو مراقب النطاق الفعال (PDC) الذي يحمل دور الناشر الأساسي (PDCe).

العثور على حامل دور PDCe

سيتم توجيه جميع عمليات المصادقة بكلمة المرور إلى متحكم النطاق هذا الذي يحمل دور PDCe لذلك فهو دائمًا أفضل مكان للتحقق. للعثور على متحكم النطاق الذي يحمل دور PDCe، يمكنك التحقق من خاصية PDCEmulator المُرجعة من سطر الأوامر Get-ADDomain.

$pdce = (Get-ADDomain).PDCEmulator

تصفح سجل الأحداث لقفل الحسابات

عندما تحصل على متحكم النطاق الذي يحمل دور PDCe، ستحتاج بعد ذلك إلى استعلام سجل الأحداث الأمني (سجلات الأمان) لهذا المتحكم النطاق للحصول على حدث ID 4740. الحدث ID 4740 هو الحدث المُسجل في كل مرة يتم فيها قفل حساب. يمكنك القيام بذلك باستخدام سطر الأوامر Get-WinEvent.

Get-WinEvent -ComputerName $pdce -FilterHashTable @{'LogName' ='Security';'Id' = 4740}

أنت أقرب بكثير الآن إلى العثور على المستخدمين المقفلين في Active Directory باستخدام PowerShell!

تحليل اسم المستخدم والموقع

سيتم إرجاع جميع حالات القفل ولكن لا يظهر على الفور اسم المستخدم وأجهزة الكمبيوتر التي تم فيها القفل. للعثور على اسم المستخدم، ستحتاج إلى الغوص قليلاً في خاصية تُرجعها سطر الأوامر Get-WinEvent والتي تسمى Properties.

$filter = @{'LogName' = 'Security';'Id' = 4740}
$events = Get-WinEvent -ComputerName $pdce -FilterHashTable $filter
$events | Select-Object @{'Name' ='UserName'; Expression={$_.Properties[0]}}, @{'Name' ='ComputerName';Expression={$_.Properties[1]}}

يمكنك أن ترى أنني قمت بنقل عامل التصفية hashtable لمنع الكود من الانقسام و، الأهم من ذلك، استخدمت الخصائص المحسوبة لـ Select-Object لاستخراج اسم المستخدم واسم الكمبيوتر من خاصية Properties. في كل هذه الحالات، يكون اسم المستخدم الذي تم قفله دائمًا العنصر الأول في مصفوفة Properties بينما يكون العنصر الثاني دائمًا اسم الكمبيوتر الذي تم فيه القفل.

الاستفادة من PowerShell لفتح حسابات AD

الآن بعد أن وجدت مستخدمي AD المقفلين، كيف تقوم بفتح الحسابات؟ يقدم وحدة ActiveDirectory في PowerShell الأمر Unlock-ADAccount الذي يساعد في إعادة العمل بسرعة للعميل. كما هو موضح أدناه، استخدم PowerShell لفتح حسابات AD. يعمل هذا الأمر في كل من Windows PowerShell وPowerShell 7 بمجرد تحميله عبر وحدة ActiveDirectory.

Unlock-ADAccount -Identity 'lockeduser'

ربما تكون ترغب في فتح جميع الحسابات المقفلة دفعة واحدة، استخدم Search-ADAccount مع المعامل -LockedOut وقم بتوجيه النتائج إلى أمر Unlock-ADAccount، كما هو موضح أدناه.

Search-ADAccount -LockedOut | Unlock-ADAccount

تقليل مكالمات مكتب الخدمة وتحديث بيانات اعتماد التخزين المؤقت للمستخدمين عن بُعد حتى خارج VPN مع حلاً لإعادة تعيين كلمة المرور بدون خدمة ذاتية. احصل على عرض توضيحي لـ Specops uReset!

الملخص

Find Locked Out Users in Active Directory

الآن يجب أن تكون قادرًا على تحديد جميع الحسابات التي تم قفلها حاليًا في نطاقك، بالإضافة إلى رؤية تاريخ جميع حالات قفل الحسابات. الآن حان الوقت لإلقاء كلام حازم على جو بخصوص ترك تلك الجلسات عبر RDP مفتوحة…

Source:
https://adamtheautomator.com/find-locked-out-users-in-active-directory-powershell/