يمكن الاستعلام عن Active Directory من سطر الأوامر باستخدام أوامر PowerShell أو dsquery القديمة.
أوامر PowerShell Active Directory
قائمة بجميع المستخدمين:
Get-ADUser -Filter *
ابحث عن مستخدم محدد:
Get-ADUser -Identity "username"
بحث المستخدم بالاسم:
Get-ADUser -Filter "Name -like '*John*'"
قائمة بجميع أجهزة الكمبيوتر:
Get-ADComputer -Filter *
قائمة بجميع المجموعات:
Get-ADGroup -Filter *
الحصول على معلومات المجال:
Get-ADDomain
احصل على وحدات تحكم المجال:
Get-ADDomainController -Filter *
تمكين وحدة PowerShell AD
إذا لم يعمل Get-ADUser، قم بتمكين الوحدة:
خادم ويندوز:
Import-Module ActiveDirectory
ويندوز 10/11: قم بتثبيت RSAT (أدوات إدارة الخادم البعيد) من الإعدادات > التطبيقات > الميزات الاختيارية.
ثم اركض:
Import-Module ActiveDirectory
أوامر DSQUERY القديمة
يعمل بدون وحدة PowerShell على الأجهزة المرتبطة بالمجال.
البحث عن كافة المستخدمين:
dsquery user
ابحث عن المستخدم بالاسم:
dsquery user -name "John*"
البحث عن جميع أجهزة الكمبيوتر:
dsquery computer
ابحث عن جميع المجموعات:
dsquery group
البحث عن الحسابات المعطلة:
dsquery user -disabled
البحث عن أجهزة الكمبيوتر غير النشطة (90 يومًا):
dsquery computer -inactive 12
12 أسبوع = 90 يومًا تقريبًا.
احصل على معلومات مفصلة للمستخدم
PowerShell - إظهار كافة الخصائص:
Get-ADUser -Identity "username" -Properties *
DSGET (قديم):
dsquery user -name "username" | dsget user -display -email -mobile
ابحث عن عضويات مجموعة المستخدم
بوويرشيل:
Get-ADPrincipalGroupMembership -Identity "username"
DSGET:
dsget user "CN=Username,OU=Users,DC=domain,DC=com" -memberof
ابحث عن أعضاء المجموعة
بوويرشيل:
Get-ADGroupMember -Identity "GroupName"
DSGET:
dsget group "CN=GroupName,OU=Groups,DC=domain,DC=com" -members
تحقق مما إذا كان المستخدم مغلقًا
بوويرشيل:
Get-ADUser -Identity "username" -Properties LockedOut | Select-Object Name,LockedOut
فتح المستخدم:
Unlock-ADAccount -Identity "username"
إعادة تعيين كلمة مرور المستخدم
Set-ADAccountPassword -Identity "username" -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "NewPassword123!" -Force)
فرض تغيير كلمة المرور عند تسجيل الدخول التالي:
Set-ADUser -Identity "username" -ChangePasswordAtLogon $true
البحث عن الكمبيوتر
بالاسم:
Get-ADComputer -Filter "Name -like '*DESKTOP*'"
حسب نظام التشغيل:
Get-ADComputer -Filter "OperatingSystem -like '*Windows 11*'" -Properties OperatingSystem
تصدير النتائج إلى ملف CSV
بوويرشيل:
Get-ADUser -Filter * -Properties DisplayName,EmailAddress | Export-Csv users.csv -NoTypeInformation
إنشاء ملف CSV ببيانات المستخدم.
المرشحات المشتركة
المستخدمون الذين تم إنشاؤهم في آخر 30 يومًا:
$date = (Get-Date).AddDays(-30)
Get-ADUser -Filter "Created -gt '$date'" -Properties Created
المستخدمون لم يسجلوا الدخول مطلقًا:
Get-ADUser -Filter "LastLogonDate -notlike '*'" -Properties LastLogonDate
عدم تسجيل الدخول لأجهزة الكمبيوتر لمدة 90 يومًا:
$date = (Get-Date).AddDays(-90)
Get-ADComputer -Filter "LastLogonDate -lt '$date'" -Properties LastLogonDate
استكشاف الأخطاء وإصلاحها
"لم يتم التعرف على Get-ADUser": استيراد وحدة ActiveDirectory أو تثبيت RSAT.
"غير قادر على الاتصال بالخادم": ليس على شبكة المجال أو وحدة تحكم المجال غير قابلة للوصول.
"تم رفض الوصول": بحاجة إلى مسؤول المجال أو أذونات الإعلان المناسبة.
DSQUERY لا يُرجع شيئًا: التحقق من بناء الجملة، والتأكد من الانضمام إلى المجال، والتحقق من الاتصال بالشبكة.
خلاصة القول
بوويرشيل (حديث):
Get-ADUser -Filter * | Find users
Get-ADComputer -Filter * | Find computers
Get-ADGroup -Filter * | Find groups
DSQUERY (قديم):
dsquery user | Find users
dsquery computer | Find computers
dsquery group | Find groups
يعد PowerShell أكثر قوة ولكنه يتطلب وحدة ActiveDirectory. يعمل DSQUERY على الأجهزة المرتبطة بالمجال دون الحاجة إلى إعداد إضافي.
كلاهما يتطلب اتصالاً بشبكة المجال والأذونات المناسبة.