7

Хотя это легко для Linux, но не так просто для Windows из того, что я смог собрать до сих пор. Я нашел команду, которая делает то, что я хочу:

net user username /domain

Однако я хочу удалить все данные, кроме списка групп. Я думаю, что findstr может быть ответом, но я не уверен, как использовать это, чтобы сделать это. По сути, я предполагаю, что скрипт будет делать что-то вроде этого (если нет более конкретной команды, которая была бы невероятной):

net user username /domain > temp.txt
findstr (or some other command) file.txt > groups.txt
del temp.txt

Вывод данных будет список вроде этого:

группа 1; group2; group3

Теперь я мог бы пойти по этому сложному пути, так как, как я уже говорил, есть команда, которая может выводить ТОЛЬКО группы безопасности пользователя, что было бы фантастически.

3 ответа3

3

Используйте PowerShell!

$user = [wmi] "Win32_UserAccount.Name='JohnDoe',Domain='YourDomainName'"
$user.GetRelated('Win32_Group')

или только для имен групп:

$user = [wmi] "Win32_UserAccount.Name='JohnDoe',Domain='YourDomainName'"
$user.GetRelated('Win32_Group') | Select Name

http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/67defa12-6ad1-439b-bd11-3abfc5b5208a/

2
dsquery user -name "My Full Name" | dsget user -memberof | dsget group -samid

Я обнаружил, что это в значительной степени дает мне то, что я искал, на случай, если кому-то будет любопытно! :)

2

Хм.

net user paul /domain | find "Global Group memberships"

Дадим вам группы, но если вы не хотите заголовок, вам нужно что-то более активное:

for /f "tokens=4*" %f in ('net user paul /domain ^| find "Global Group memberships"') do echo %f

Так что% f содержит группы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .