سؤال سطر الأوامر لسرد المستخدمين في مجموعة Windows Active Directory؟


هل هناك طريقة سطر أوامر لسرد جميع المستخدمين في مجموعة معينة من Active Directory؟

أستطيع أن أرى من هو في المجموعة من خلال الذهاب إلى إدارة الكمبيوتر -> المستخدم المحلي / المجموعات -> المجموعات والنقر المزدوج على المجموعة.

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


124
2017-08-03 17:19


الأصل




الأجوبة:


محاولة

dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members

37
2017-08-03 17:22



من المحتمل أن تحتاج إلى مزيد من الجهد لحل الأعضاء والأعضاء المكررة في المجموعات المتداخلة. - duffbeer703
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expand تحصل على الأعضاء في المجموعات المتداخلة ، على الرغم من أنها قد لا تساعد في التكرار ، وتعطيك سلسلة استعلام AD الكاملة للعضو ، وليس فقط CN الخاص بهم. - jonnybot
القيادة غير موجودة على Win7 SP1. أنا أعتقد أنك بحاجة إلى تثبيت RSAT؟ - Iszi
لا يتم التعرف على "dsget" كأمر داخلي أو خارجي ، إلخ. - adolf garlic
adolfgarlic - stackoverflow.com/questions/8514599/... - bchilders


هنا طريقة أخرى من موجه الأوامر ، غير متأكد من كيفية automatable على الرغم من أنه سيكون لديك تحليل الإخراج:

إذا كانت المجموعة "مجموعة أمان عالمية":

net group <your_groupname> /domain

إذا كنت تبحث عن "مجموعة أمان المجال المحلي":

net localgroup <your_groupname> /domain

209
2018-01-04 20:11



غير متأكد من سبب هبوط هذا الأمر ... قد يتطلب الإخراج إعرابًا صغيرًا ، ولكنه يتمتع بميزة الاعتماد فقط على الأدوات المساعدة التي تعد جزءًا من تثبيت windows الأساسي. - G-Wiz
ولكن هل هناك أي طريقة حول أسماء المجموعات المقتطعة؟ - deed02392
هذا عظيم! عملت علاج. - WOPR
لاحظ أن هذا ليس عوديًا ولا يدرج المجموعات الموجودة في مجموعة. ليس من المفيد جدا إذا كان لديك مجموعات متداخلة أو هرمية. - Mark
هذا يعمل تماما بالنسبة لي (ويذهب بشكل جيد جنبا إلى جنب مع net user /domain). شكر! - xan


وإليك إصدارًا من الأمر ds الذي وجدته أكثر فائدة عادة ، خاصة إذا كان لديك بنية OU معقدة ولا تعرف بالضرورة الاسم المميز الكامل للمجموعة.

dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand

أو إذا كنت تعرف CN للمجموعة ، عادةً نفس معرف SAM ، مقتبس في حالة وجود مسافات في الاسم:

dsquery group -name "Group Account Name" | dsget group -members -expand

كما ورد في التعليقات ، فإن أوامر ds * (dsquery ، dsget ، dsadd ، dsrm) تكون متاحة فقط على وحدة تحكم المجال. ومع ذلك ، يمكنك تثبيت حزمة أدوات المسؤول من أدوات الدعم على وسائط تثبيت Windows Server أو تنزيله من موقع تنزيل Microsoft.

يمكنك أيضًا إجراء هذه الاستعلامات باستخدام PowerShell. يتوفر PowerShell بالفعل كميزة قابلة للتثبيت في Server 2008 و R2 و Windows 7 ، ولكنك ستحتاج إلى ذلك قم بتنزيل WinRM Framework لتثبيته على XP أو Vista.

للوصول إلى أي من أوامر cmdlets الخاصة بـ AD في PowerShell ، سوف تفعل ذلك أيضا تحتاج إلى تنفيذ واحد على الأقل من عمليات التثبيت التالية:


48
2017-08-03 19:09



أنا استخدم الاستعلام الأول في كل وقت - Jim B
كن على علم أن لديك لتشغيل هذا الأمر على وحدة تحكم المجال. - skolima
أنت لا لديك لتشغيل هذا الأمر على وحدة تحكم المجال. ولكن هل فعل تحتاج إلى تثبيت Admin Support Pack .msi الذي تم تضمينه في أدوات الدعم على Windows Server 2003 CDROM. أو تنزيله من microsoft.com/downloads/en/... - Ryan Fisher


للحصول على حل PowerShell لا يتطلب الوظيفة الإضافية Quest Quest ، حاول القيام بما يلي

Import-Module ActiveDirectory

Get-ADGroupMember "Domain Admins" -recursive | Select-Object name

هذا سوف تعداد المجموعات المتداخلة كذلك. إذا كنت لا ترغب في القيام بذلك ، قم بإزالة -العودية مفتاح كهربائي.


23
2018-03-24 16:41



أنت على صواب أن وحدة ActiveDirectory لا تتطلب الأداة الإضافية Active ActiveRoles AD ، ولكنها تتطلب أن يكون لديك أدوات RSAT مثبتة وأن AD الخاص بك لديه DC واحد على الأقل مع خدمة ويب Active Directory (لـ 2008 R2) أو خدمة بوابة إدارة خدمة Active Directory (لعام 2003 ، DCs) مثبتة. انظر إجابتي أعلاه للحصول على التفاصيل والروابط. - Ryan Fisher


طريقة سهلة للغاية تعمل على الخوادم والعملاء:

NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"

إرجاع 1 إذا كان المستخدم في مجموعة YOURGROUPNAME ، سيعرض آخر 0

يمكنك بعد ذلك استخدام القيمة٪ ERRORLEVEL٪ (0 إذا كان المستخدم في المجموعة ، 1 إذا لم يكن كذلك)

IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE

14
2017-10-08 09:37



يبحث الأمر "net group" فقط في المجال (أو شجرة المجال) حيث يكون الكمبيوتر منضماً. البديل الأكثر حداثة هو: whoami /groups | find /I /C "YOURGROUPNAME" - DavisNT


وباستخدام PowerShell و Shell Management لـ Active Directory في Active Directory ، يمكنك استخدام:

(Get-QADGroup "GroupName")

http://www.quest.com/powershell/activeroles-server.aspx


10
2017-08-03 20:51



أيضًا: Get-QADGroupMember 'GroupName' - Gordon Bell


الإجابات هنا باستخدام dsgetو dsquery تعمل فقط على إصدارات الخادم من Windows حيث لا يتم شحن هذه الأوامر على إصدارات أخرى من Windows (على سبيل المثال ، Windows 7). على الأجهزة بدون تلك الأوامر يمكنك الحصول على المعلومات التي تريدها باستخدام أمر ادفيند.

في ما يلي مثال لطلب البحث للحصول على عضوية المجموعة:

AdFind.exe -default -f name="Domain Admins" member -list

7
2018-03-31 10:34



ADFind.exe هي أداة خارجية يجب عليك تثبيتها على أي حال. يمكن تثبيت أوامر ds * عبر حزمة أدوات المسؤول. - Ryan Fisher


كيفية قائمة المجموعات والمستخدمين المحليين؟

استخدم البرنامج النصي powershell التالي لسرد المجموعات المحلية وأعضاء تلك المجموعات.

$server="YourServerName"
$computer = [ADSI]"WinNT://$server,computer"

$computer.psbase.children | where { 

$_.psbase.schemaClassName -eq 'group' } | foreach {
    write-host $_.name
    write-host "------"
    $group =[ADSI]$_.psbase.Path
    $group.psbase.Invoke("Members") | foreach {
$_.GetType().InvokeMember("Name", 'GetProperty', 

$null, $_, $null)}
    write-host
}

انسخ النص أعلاه في إلى notepad وحفظ باسم filename.ps1. ثم قم بتشغيل الملف. يجب أن أعرض المجموعات والمستخدمين في كل مجموعة ، أو يمكنك فقط تشغيل هذا من powershell.


4
2018-01-14 19:12



انا حصلت، cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters: ثم يسأل عن المدخلات ، Process[0] - Mike S