Windows सक्रिय निर्देशिका समूह में उपयोगकर्ताओं को सूचीबद्ध करने के लिए कमांड लाइन?


136

क्या किसी विशेष सक्रिय निर्देशिका समूह में सभी उपयोगकर्ताओं को सूचीबद्ध करने के लिए एक कमांड लाइन तरीका है?

मैं यह देख सकता हूं कि प्रबंधित कंप्यूटर पर कौन समूह में है -> स्थानीय उपयोगकर्ता / समूह -> समूह और समूह पर डबल क्लिक करें।

मुझे केवल डेटा को पुनः प्राप्त करने के लिए कमांड लाइन तरीके की आवश्यकता है, इसलिए मैं कुछ अन्य स्वचालित कार्य कर सकता हूं।

जवाबों:


37

प्रयत्न, कोशिश

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

1
नेस्टेड समूहों में सदस्यों और डुप्लिकेट सदस्यों को हल करने के लिए आपको शायद थोड़ा और करने की आवश्यकता है।
duffbeer703

1
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expandआपको नेस्टेड समूहों में सदस्य मिलते हैं, हालांकि यह डुप्लिकेट के साथ मदद नहीं कर सकता है, और यह आपको सदस्य के लिए पूर्ण विज्ञापन क्वेरी स्ट्रिंग देता है, न कि केवल उनके सीएन।
जॉनीबॉट 19

2
Win7 SP1 पर कमांड नहीं मिली। मुझे लगता है कि आप RSAT स्थापित की जरूरत है?
इज़्ज़ी

11
'dsget' को आंतरिक या बाहरी आदेश, आदि के रूप में मान्यता प्राप्त नहीं है।
एडॉल्फ लहसुन


237

यहाँ कमांड प्रॉम्प्ट से एक और तरीका है, यह सुनिश्चित करने के लिए कि स्वचालित रूप से कैसे स्वचालित नहीं है क्योंकि आपको आउटपुट पार्स करना होगा:

यदि समूह "वैश्विक सुरक्षा समूह" है:

net group <your_groupname> /domain

यदि आप "डोमेन स्थानीय सुरक्षा समूह" की तलाश कर रहे हैं:

net localgroup <your_groupname> /domain

23
यह सुनिश्चित नहीं किया गया कि इसे डाउनवोट क्यों किया गया ... आउटपुट के लिए थोड़ी पार्सिंग की आवश्यकता हो सकती है, लेकिन इसमें केवल उपयोगिताओं के आधार पर लाभ होता है जो बेस विंडोज़ इंस्टॉल का हिस्सा होते हैं।
G-Wiz

2
लेकिन क्या समूह के नाम के बारे में कोई रास्ता है?
deed02392

1
यह भी खूब रही! एक इलाज का काम किया।
WOPR

2
ध्यान दें कि यह पुनरावर्ती नहीं है और उन समूहों को सूचीबद्ध नहीं करता है जो एक समूह में हैं। यदि आपके पास नेस्टेड या पदानुक्रमित समूह हैं, तो बहुत उपयोगी नहीं है।
मार्क

यह मेरे लिए पूरी तरह से काम करता है (और अच्छी तरह से हाथ से चला जाता है net user /domain)। धन्यवाद!
xan

49

यहाँ ds कमांड का एक संस्करण है जो मुझे आमतौर पर अधिक उपयोगी लगा, खासकर यदि आपके पास एक जटिल OU संरचना है और जरूरी नहीं कि समूह का पूर्ण प्रतिष्ठित नाम पता हो।

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

या यदि आप समूह के सीएन को जानते हैं, आमतौर पर एसएएम आईडी के समान है, तो नाम में रिक्त स्थान होने पर उद्धृत किया जाता है:

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

जैसा कि टिप्पणियों में कहा गया है, डिफ़ॉल्ट रूप से ds * कमांड (dsquery, dsget, dsadd, dsrm) केवल एक डोमेन नियंत्रक पर उपलब्ध हैं। हालाँकि, आप Windows Server स्थापना मीडिया पर समर्थन उपकरण से व्यवस्थापक उपकरण पैक स्थापित कर सकते हैं या इसे Microsoft डाउनलोड साइट से डाउनलोड कर सकते हैं।

आप PowerShell का उपयोग करके इन प्रश्नों को भी कर सकते हैं। PowerShell पहले से ही सर्वर 2008, 2008 R2 और विंडोज 7 के लिए एक इंस्टॉल करने योग्य सुविधा के रूप में उपलब्ध है, लेकिन आपको इसे XP या Vista पर स्थापित करने के लिए WinRM फ्रेमवर्क डाउनलोड करना होगा ।

PowerShell में कोई विज्ञापन-आधारित cmdlets तक पहुँच प्राप्त करने के लिए आप होगा भी निम्नलिखित इंस्टॉल किए जाने की कम से कम एक प्रदर्शन करने के लिए की जरूरत है:


मैं हर समय पहली क्वेरी का उपयोग करता हूं
जिम बी

1
ध्यान रखें कि आपको इस कमांड को डोमेन कंट्रोलर पर चलाना है।
skolima

9
आपको इस आदेश को एक डोमेन नियंत्रक पर चलाने की आवश्यकता नहीं है। हालांकि, अगर आप करते व्यवस्थापक सहायता पैक .msi जो Windows 2003 सर्वर सीडीरॉम पर समर्थन टूल में शामिल है स्थापित किया है की जरूरत है। या इसे microsoft.com/downloads/en/…
Ryan Fisher

24

PowerShell समाधान के लिए क्वेस्ट AD ऐड-इन की आवश्यकता नहीं है, निम्न का प्रयास करें

Import-Module ActiveDirectory

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

यह नेस्टेड समूहों के रूप में अच्छी तरह से enumerate होगा। यदि आप ऐसा नहीं करना चाहते हैं, तो -reciveive स्विच को हटा दें ।


6
आप सही हैं कि ActiveDirectory मॉड्यूल को क्वेस्ट ActiveRoles AD स्नैप-इन की आवश्यकता नहीं है, लेकिन इसके लिए आवश्यक है कि आपके पास RSAT उपकरण स्थापित हों और आपके AD में सक्रिय निर्देशिका वेब सेवा (2008 के लिए) के साथ कम से कम एक DC हो R2) या सक्रिय निर्देशिका प्रबंधन गेटवे सेवा (2003, 2008 DCs के लिए) स्थापित की गई। विवरण और लिंक के लिए मेरा जवाब ऊपर देखें।
रयान फिशर

16

एक बहुत ही आसान तरीका जो सर्वर और क्लाइंट पर काम करता है:

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

यदि उपयोगकर्ता आपका समूह समूह में है तो 1 लौटाता है, अन्यथा 0 वापस आ जाएगा

आप तब% ERRORLEVEL% मान का उपयोग कर सकते हैं (0 यदि समूह में उपयोगकर्ता, 1 नहीं तो) पसंद है

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

1
"नेट ग्रुप" कमांड केवल डोमेन (या डोमेन ट्री) की खोज करता है जहां कंप्यूटर शामिल होता है। एक और आधुनिक विकल्प है:whoami /groups | find /I /C "YOURGROUPNAME"
डेविसएनटी

10

सक्रिय निर्देशिका के लिए PowerShell और क्वेस्ट सॉफ़्टवेयर के निशुल्क ActiveRoles प्रबंधन शेल का उपयोग करना, आप इसका उपयोग कर सकते हैं:

(Get-QADGroup "GroupName")। सदस्य

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


इसके अलावा: Get-QADGroupMember 'GroupName'
गॉर्डन बेल

7

यहां उपयोग करने वाले उत्तर dsgetऔर dsqueryकेवल विंडोज के सर्वर संस्करणों पर काम करेंगे क्योंकि उन कमांड को विंडोज के अन्य संस्करणों (जैसे विंडोज 7) पर शिप नहीं किया गया है। उन आदेशों के बिना मशीनों पर आप AdFind कमांड का उपयोग करके अपनी इच्छित जानकारी प्राप्त कर सकते हैं ।

यहां समूह सदस्यता प्राप्त करने के लिए एक उदाहरण क्वेरी है:

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

4
ADFind.exe एक तृतीय पक्ष उपकरण है जिसे आपको वैसे भी स्थापित करना है। Ds * कमांड एडमिन टूल पैक के माध्यम से इंस्टॉल करने योग्य हैं।
रयान फिशर

4

स्थानीय समूहों और उपयोगकर्ताओं को कैसे सूचीबद्ध करें?

स्थानीय समूहों और उन समूहों के सदस्यों को सूचीबद्ध करने के लिए निम्नलिखित पॉवरशेल स्क्रिप्ट का उपयोग करें।

$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
}

नोटपैड पर पाठ को कॉपी करें और इस रूप में सहेजें filename.ps1। फिर फ़ाइल चलाएँ। मुझे प्रत्येक समूह में समूह और उपयोगकर्ता प्रदर्शित करने चाहिए, या आप इसे केवल शक्तियां से चला सकते हैं।


मुझे मिलता है, cmdlet ForEach-Object at command pipeline position 1. Supply values for the following parameters:और फिर इनपुट के लिए पूछता है,Process[0]
माइक एस

3

प्रदर्शन के सदस्यों के लिए UserGroup1:

dsquery group -name UserGroup1 | dsget group -members | dsget user -display

1
हो सकता है कि आप यह बताना चाहते हों कि आप किस सीएलआई उपयोगिता का उपयोग करेंगे। मुझे नहीं लगता कि यह cmdकिसी कारण से बहुत अच्छा काम करने वाला है।
हॉपलेसनब बी

@ हॉपलेसनब बी: यह cmd में काम करता है
Pete

@ नई नीप! dsget failed:'Target object for this command' is missing.
HopelessN00b

@ HopelessN00b: अगर यूजरग्रुप 1 मौजूद नहीं है, तो मुझे त्रुटि मिलती है, "अकाउंटिंग *" की तरह कुछ आज़माएँ
पीट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.