שאלה שורת פקודה לרשימה של משתמשים בקבוצת 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



לא בטוח למה זה היה downvoted ... את הפלט עשוי לדרוש קצת ניתוח, אבל יש לו את היתרון של תלוי רק על כלי עזר שהם חלק של Windows הבסיס להתקין. - G-Wiz
אבל האם יש דרך כלשהי סביב שמות קבוצה חתוכים? - deed02392
זה נהדר! עבד פינוק. - WOPR
שים לב שזה לא רקורסיבי ואינו מפרט קבוצות שנמצאות בקבוצה. לא מועיל מאוד אם יש לך קבוצות מקוננות או היררכיות. - Mark
זה עובד בצורה מושלמת בשבילי (והולך יד ביד עם net user /domain). תודה! - xan


הנה גרסה של הפקודה ds מצאתי יותר שימושי בדרך כלל, במיוחד אם יש לך מבנה OU מורכבים לא בהכרח יודע את השם המלא של הקבוצה.

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

או אם אתה יודע את CN של הקבוצה, בדרך כלל זהה ID SAM, מצוטט במקרה יש רווחים בשם:

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

כאמור הערות, כברירת מחדל ds * פקודות (dsquery, dsget, dsadd, dsrm) זמינים רק על בקר תחום. עם זאת, באפשרותך להתקין את ערכת כלי הניהול מתוך כלי התמיכה בכלי המדיה של Windows Server או הורד את זה מאתר ההורדות של Microsoft.

ניתן גם לבצע שאילתות אלה באמצעות PowerShell. PowerShell כבר זמינה כתכונה ניתנת להתקנה עבור Server 2008, 2008 R2 ו- Windows 7, אך עליך לבצע זאת הורד את המסגרת WinRM כדי להתקין את זה על XP או Vista.

כדי לקבל גישה לכל cmdlets ספציפיים לספירה ב PowerShell תוכלו גם יש לבצע לפחות אחת מההתקנות הבאות:


48
2017-08-03 19:09



אני משתמש בשאילתה הראשונה כל הזמן - Jim B
שים לב כי אתה צריך להפעיל את הפקודה על תחום שליטה. - skolima
אתה אל יש להפעיל את הפקודה הזו בבקר תחום. עם זאת, אתה DO צריך להתקין את חבילת התמיכה של מנהל המערכת. msi הכלולה בכלי התמיכה ב- CDROM של Windows 2003 Server. או הורד את זה מ microsoft.com/downloads/en/... - Ryan Fisher


לקבלת פתרון PowerShell שאינו דורש את התוסף AD AD-in, נסה את הפעולות הבאות

Import-Module ActiveDirectory

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

זה יהיה למנות את הקבוצות מקוננות גם כן. אם אינך רוצה לעשות זאת, הסר את - רקורד החלף.


23
2018-03-24 16:41



אתה צודק כי מודול ActiveDirectory אינו דורש את הצמד ActiveRoles AD snap-in, אבל זה דורש כי יש לך את הכלים RSAT מותקן וכי AD שלך יש לפחות DC אחד עם או Active Directory Web Service (עבור 2008 R2) או שירות Active Directory Gateway Service (עבור 2003, DCs 2008). עיין בתשובה שלי למעלה לקבלת פרטים וקישורים. - 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 ו Quest תוכנה חינם ActiveRoles ניהול מעטפת עבור 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.

הנה שאילתה לדוגמה לקבלת חברות בקבוצה:

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

7
2018-03-31 10:34



ADFind.exe הוא כלי צד שלישי אתה צריך להתקין בכל זאת. פקודות ds * ניתנות להתקנה באמצעות חבילת כלי הניהול. - Ryan Fisher


כיצד רשימה של קבוצות ומשתמשים מקומיים?

השתמש ב- scripthell הבא כדי לרשום את הקבוצות המקומיות ואת החברים בקבוצות אלה.

$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. לאחר מכן הפעל את הקובץ. אני צריך להציג את הקבוצות והמשתמשים בכל קבוצה, או שאתה יכול פשוט להפעיל את זה מ 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


עבור חברי התצוגה של UserGroup1 לנסות you

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

3
2017-10-10 00:54



אולי כדאי להצביע על מה כלי השירות CLI היית משתמש בו. אני לא חושב שזה הולך לעבוד טוב מדי cmd, מסיבה כלשהי. - HopelessN00b
@ HopelessN00b: זה עובד ב cmd - Pete
@ Pete Newp! dsget failed:'Target object for this command' is missing. - HopelessN00b
@ HopelessN00b: אני מקבל שגיאה אם ​​UserGroup1 אינו קיים, נסה משהו כמו "חשבונאות *" - Pete