Отримати незарізані групи користувачів Active Directory із командного рядка


90

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

net user /DOMAIN <username>

Це працює добре, однак назви груп усічені приблизно до 20 символів. І в моїй організації більшість імен груп набагато довші за це.

Хтось знає про спосіб отримати нескорочені групи AD за допомогою командного рядка?


1
Виходячи з дати цього запитання, я здогадуюсь, що усічення 20 символів більше не є річчю, оскільки запуск цієї команди повертає групи з більшими іменами. Відповідь нижче whoami /groupsтакож хороша. Але в ньому перелічуються лише групи користувачів, які наразі зареєстровані. Уособлення та витончене програмування можуть це обійти;)
Річард Баркер,

2
Запустив його для користувача в домені в моїй організації; Зрізання 20 символів все ще залишається проблемою.
SherlockSpreadsheets

Гарне запитання, Агуадо!
Барт,

Відповіді:


-9

Ви можете проаналізувати вихідні дані команди GPRESULT.


68
Без прикладу це марна відповідь
qujck

8
Але це правильна марна відповідь ... мабуть.
Воєначальник 099,

Він не відображає групи AD. Він показує ВАГАТУ багато іншого, але не групи AD.
Джон Роча,

Хлопці, на той час (запитували і відповідали у 2009 році), можливо, це був єдиний спосіб насправді зробити те, що потрібно ОП. Зверніть увагу, що він згадує усічення після 20 символів в назві групи.
Річард Баркер,

@RichardBarker: Зрізання все ще відбувається з NET USER у 2019 році.
Росс Прессер,

109

GPRESULTє правильною командою, але її неможливо запустити без параметрів. /vабо багатослівний варіант важко управляти, не виводячи в текстовий файл. Я рекомендую використовувати

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

6
Це має бути відповіддю
LT

1
Якщо ви шукаєте конкретний рядок, ви можете використовувати його findstrзамість того, щоб перенаправляти вихідні дані у файл, а потім шукати файл. Наприклад, gpresult /user myAccount /r | findstr mySearchString.
Джессі

2
Коли я запускаю це для свого облікового запису користувача, це чудово, і я бачу групи безпеки. Коли я запускаю його для іншого облікового запису користувача, команда повертає: Користувач "userNameHere" не має даних RSOP.
SherlockSpreadsheets

59

Трохи несвіжий пост, але я зрозумів, що за біса. Чи відповідає "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 (що не завжди є варіантом)
Дейв Лукре

1
Хоча це посилання може відповісти на питання, краще включити сюди основні частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
Zulan

@Zulan: Ви витрачаєте час на відповідь, якій 7 років! Мало того, але це також здається невідповідним, оскільки ви не прокоментували прийняту відповідь однаково.
Mitch Wheat

@MitchWheat: Ви помітили From Reviewпосилання в кінці його коментаря? Він не коментував прийняту відповідь, оскільки не натрапив на неї під час огляду.
зондо

Я зробив. Я б міг подумати, що рецензент хоча б перевірить прийняту відповідь.
Мітч Пшениця

0

На основі відповіді P.Brian.Mackey - я намагався використовувати 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.