Получение необрезанных групп Active Directory пользователя из командной строки


92

Я часто использую net userкоманду, чтобы посмотреть группы AD для пользователя:

net user /DOMAIN <username>

Это работает хорошо, однако имена групп сокращены примерно до 20 символов. И в моей организации названия большинства групп намного длиннее этого.

Кто-нибудь знает способ получить необрезанные группы AD через командную строку?


1
Основываясь на дате этого вопроса, я предполагаю, что 20-символьное усечение больше не актуально, поскольку выполнение этой команды возвращает группы с большими именами. Ответ ниже whoami /groupsтоже хороший. Но в нем перечислены только группы пользователей, вошедших в систему в данный момент. Однако подражание и хитрое программирование могут обойти это;)
Ричард Баркер

2
Выполнить поиск пользователя в домене моей организации; Усечение до 20 символов все еще остается проблемой.
SherlockSpreadsheets

Хороший вопрос, Агуадо!
Крейг Уилкокс

Ответы:


-11

Вы можете проанализировать вывод команды GPRESULT.


69
Без примера это бесполезный ответ
qujck

8
Но это правильный бесполезный ответ ... видимо.
Warlord 099,

Он не показывает группы AD. Он показывает МНОГО другого, но не группы AD.
John Rocha,

Ребята, в то время (спросили и ответили в 2009 году), возможно, это был единственный способ сделать то, что нужно OP. Обратите внимание, что он упоминает усечение после 20 символов в имени группы.
Ричард Баркер

1
@RichardBarker: В 2019 году в NET USER по-прежнему происходит усечение.
Росс Прессер,

113

GPRESULTэто правильная команда, но ее нельзя запустить без параметров. /vили подробный вариант сложно управлять без вывода в текстовый файл. EG Я рекомендую использовать

gpresult /user myAccount /v > C:\dev\me.txt- Убедитесь, что C: \ Dev \ me.txt существует

Другой вариант - отображать только сводную информацию, которая может быть полностью видна в командном окне:

gpresult /user myAccount /r

Учетные записи перечислены под заголовком:

The user is a part of the following security groups
---------------------------------------------------

7
Это должен быть ответ
LT

1
Если вы ищете конкретную строку, вы можете использовать ее findstrвместо перенаправления вывода в файл с последующим поиском файла. Например, gpresult /user myAccount /r | findstr mySearchString.
Джесси,

2
Когда я запускаю это для своей учетной записи, это здорово, и я вижу группы безопасности. Когда я запускаю его для другой учетной записи пользователя, команда возвращает: У пользователя userNameHere нет данных RSOP.
SherlockSpreadsheets

61

Немного устаревший пост, но я понял, что за хрень. Удовлетворяет ли "whoami" вашим потребностям?

Я узнал об этом только сегодня (фактически, из того же поиска в Google, который привел меня сюда). У Windows есть инструмент whoami со времен XP (часть дополнения к набору инструментов), и он был встроен с Vista.

whoami /groups

Перечисляет все группы AD для текущего пользователя, вошедшего в систему. Я считаю, что для этого действительно требуется, чтобы вы вошли в систему как этот пользователь, поэтому это не поможет, если в вашем случае использования требуется возможность запустить команду для просмотра другого пользователя.

Только названия групп:

whoami /groups /fo list |findstr /c:"Group Name:"

Я очень давно использую WhoAmIдля получения своего имени пользователя, только чтобы понять СЕГОДНЯ, что вы можете сделать гораздо больше с ним! Спасибо.
MaYaN

3
перечислить только имена групп: for /f "tokens=1 delims=," %g in ('whoami /groups /fo csv /nh') do @echo "%~g"(примечание: использовать %%вместо %командного файла)
Lectrode

идеальный! Не стесняйтесь предлагать свежие ответы на устаревшие сообщения!
Крейг Уилкокс

5

Или вы можете использовать dsquery и dsget :

dsquery user domainroot -name <userName> | dsget user -memberof

Чтобы получить членство в группах примерно так:

Tue 09/10/2013 13:17:41.65
C:\
>dsquery user domainroot -name jqpublic | dsget user -memberof
"CN=Technical Support Staff,OU=Acme,OU=Applications,DC=YourCompany,DC=com"
"CN=Technical Support Staff,OU=Contosa,OU=Applications,DC=YourCompany,DC=com"
"CN=Regional Administrators,OU=Workstation,DC=YourCompany,DC=com"

Хотя я не могу найти никаких доказательств того, что я когда-либо устанавливал этот пакет на свой компьютер, вам может потребоваться установить Инструменты удаленного администрирования сервера для Windows 7 .


1

В PowerShell намного проще:

Get-ADPrincipalGroupMembership <username>

Требование: учетная запись, под которой вы работаете, должна быть членом того же домена, что и целевой пользователь, если вы не укажете -Credentialи -Server(непроверено).

Кроме того, у вас должен быть установлен модуль Active Directory Powershell, что, как говорит @ dave-lucre в комментарии к другому ответу, не всегда возможно.

Только для названий групп попробуйте одно из следующих:

(Get-ADPrincipalGroupMembership <username>).Name
Get-ADPrincipalGroupMembership <username> |Select Name

1
Отличный ответ! Это работает, но я не уверен, что это облегчит задачу :). Вам нужно проанализировать результат, чтобы получить список имен групп (я бы расширил это!). Это не проблема для технарей, разбирающихся в PS, но переход от пакета DOS к PS никогда не бывает легким!
hector-j-rivas

0

1
Вы не можете сделать это без установки модуля Active Directory Powershell (что не всегда вариант)
Дэйв Лукр,

2
Хотя эта ссылка может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если ссылка на страницу изменится. - Из
отзыва

@Zulan: ты тратишь время на ответ, которому 7 лет! Более того, это также кажется несоответствующим, поскольку вы не прокомментировали принятый ответ таким же образом.
Mitch Wheat

@MitchWheat: Вы обратили внимание на From Reviewссылку в конце его комментария? Он не стал комментировать принятый ответ, потому что не нашел его в обзоре.
zondo 08

Я сделал. Я бы подумал, что рецензент хотя бы проверит принятый ответ.
Mitch Wheat

0

Основываясь на ответе Брайана Макки, я пытался использовать gpresult /user <UserName> /rкоманду, но, похоже, она работала только для моей учетной записи; для учетных записей других пользователей я получил такой результат:The user "userNameHere" does not have RSOP data .

Поэтому я прочитал этот блог - https://blog.thesysadmins.co.uk/group-policy-gpresult-examples.html - и нашел решение. Вы должны знать имя компьютера пользователя:

gpresult /s <UserComputer> /r /user:<UserName>

После выполнения команды вам нужно ENTERнесколько раз завершить программу, потому что она остановится в середине вывода. Кроме того, результаты дали множество данных, включая раздел для " COMPUTER SETTINGS> Applied Group Policy Objects", затем " COMPUTER SETTINGS> Security groups" и, наконец, " USER SETTINGS> security groups" (это то, что мы ищем с группами AD, перечисленными с не усеченными описаниями!).

Интересно отметить, что у GPRESULT были некоторые дополнительные члены, которых не было в команде NET USER. Кроме того, порядок сортировки не соответствует алфавиту. Любой орган, который может добавить больше идей в комментарии, было бы здорово.

ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ: gpresult (with ComputerName, UserName)

По соображениям безопасности я включил только часть результатов членства. (ВСЕГО 36, ВЫБОРКА 12)

The user is a part of the following security groups
---------------------------------------------------
..
 Internet Email 
 GEVStandardPSMViewers  
 GcoFieldServicesEditors    
 AnimalWelfare_Readers  
 Business Objects   
 Zscaler_Standard_Access    
..
 GCM    
..
 GcmSharesEditors   
 GHVStandardPSMViewers  
 IntranetReportsViewers 
 JetDWUsers     -- (NOTE: this one was deleted today, the other "Jet" one was added)
..
 Time and Attendance Users  
..

ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ: net user /DOMAIN (with UserName)

По соображениям безопасности я включил только часть результатов членства. (ВСЕГО 23, ВЫБОРКА 12)

Local Group Memberships  
Global Group memberships    ...
                             *Internet Email       *GEVStandardPSMViewers
                             *GcoFieldServicesEdito*AnimalWelfare_Readers
                             *Business Objects     *Zscaler_Standard_Acce
                             ...
                             *Time and Attendance U*GCM
                             ...
                             *GcmSharesEditors     *GHVStandardPSMViewers
                             *IntranetReportsViewer*JetPowerUsers
The command completed successfully.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.