Вывести список всех учетных записей пользователей в доменной группе Windows через командную строку?

2595
Nick

Я хотел бы найти \ создать команду для перечисления всех учетных записей пользователей со всеми подробностями на контроллере домена Windows (Server 2012 R2) из ​​указанной группы.

Использование «net users» было бы идеально, но я не знаю, как сделать вывод этой команды для всех пользователей за одно действие (т.е. мне нужно написать эту команду для каждого пользователя отдельно, если я хочу узнать подробности).

Если нет возможности использовать «Сетевые пользователи», то

WMIC USERACCOUNT 

было бы тоже хорошо. Но мне также нужно получить информацию из указанной группы (администраторы предприятия, администраторы домена и т. Д.).
Я знаю, что могу использовать PowerShell, но я пытаюсь найти решение для CMD.

2

2 ответа на вопрос

1
Pimp Juice IT

Вы можете просто использовать PowerShell в пакетном скрипте, чтобы запустить необходимую логику в cmd, чтобы получить лучшее из обоих миров. Ниже я поместил простой пример, в котором вы просто измените GroupNameзначение переменной на группу, к которой вам нужно обратиться, и она предоставит вам список членов этой группы в cmd, как вы и ожидаете.

Так как вы сказали, что запускаете это на контроллере домена, просто используйте Get-ADGroupMember и выполните задачу легко, используя cmd по своему желанию.

Пакетный скрипт (только для членов группы)

Примечание. Добавьте -Recursiveпереключатель, чтобы получить членов других вложенных групп, если это применимо.

@ECHO OFF  SET "GroupName=Domain Admins" CALL :DynamicPSScriptBuild  SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'" PAUSE EXIT /B  :DynamicPSScriptBuild SET PSScript=%temp%\~tmp%~n0.ps1 IF EXIST "%PSScript%" DEL /Q /F "%PSScript%" ECHO Get-ADGroupMember -Identity "%GroupName%" ^| Select-Object Name>>"%PSScript%" GOTO :EOF 

Пример вывода

enter image description here


Кроме того, если вам нужно получить больше, чем просто члены группы запрашиваемой группы, вы можете сохранить эту информацию в переменной, а затем передать объект этого массива переменных в цикл ForEach-Object, а затем выполнить итерацию по Get-ADUser и вытащить определенные свойства оттуда по мере необходимости.

Пакетный сценарий (члены группы плюс другие детали)

@ECHO OFF  SET "GroupName=Domain Admins" CALL :DynamicPSScriptBuild  SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'" PAUSE EXIT /B  :DynamicPSScriptBuild SET PSScript=%temp%\~tmp%~n0.ps1 IF EXIST "%PSScript%" DEL /Q /F "%PSScript%" ECHO $m = Get-ADGroupMember -Identity "domain admins" ^| Select-Object SamAccountName>>"%PSScript%" ECHO $m ^| %% >>"%PSScript%" GOTO :EOF 

Пример вывода

enter image description here


Дополнительные ресурсы

Гектометр Спасибо! Я буду использовать PowerShell, если мне не удастся найти решение для CMD. Кажется, вывод не очень информативен. Затем я использую «Пользователи сети», я получаю много информации, такой как: Комментарий, последнее обновление пароля, последний вход в систему, членство в Глобальной группе и т. Д. Я думаю, мне нужно изменить «Выбрать имя объекта» на «Выбрать»? Nick 5 лет назад 0
Ага. «Я хотел бы найти \ создать команду для перечисления всех учетных записей пользователей со всеми деталями», - моя формулировка была не очень хорошей. Nick 5 лет назад 0
@Nick Все эти детали для каждой учетной записи ... `Get-ADUser""-Properties *` из того, что я могу сказать при тестировании, чтобы вы хотели знать членов группы, а затем для каждого из этих членов вы хотите получить все подробности из этой команды? Pimp Juice IT 5 лет назад 0
@Nick Я только что обновил свой ответ с более подробной информацией и небольшим примером, но вот как это работает, и это тоже не так сложно. Вы можете углубиться в это и получить другие свойства и значения, поместить их в другой формат, если это необходимо, и т. Д. Помогите мне более точно понять, какие значения вам нужны, и я посмотрю, смогу ли я помочь дальше, но эту логику вы могли бы использовать и получить остальное тривиально оттуда. Pimp Juice IT 5 лет назад 0
@Nick Наконец, к вашему сведению, если вам интересно ... В прошлом я использовал такие команды, как `ldifde`,` dsget group` и `dsquery group`, но PowerShell намного проще и надежнее. Некоторые из этих команд становятся длинными и безобразными, и я не помню, дает ли это все детали, которые вам нужны. Я тоже искал решение для cmd много лет назад, и это то, что я выкопал из старого набора сценариев, которые я использовал в прошлом .... PowerShell должен быть подходом для решения задач Windows Domain Admin с этой задачей, я думаю. Вы все равно можете запустить его через пакет или cmd.exe в любом случае. Удачи в любом случае! Pimp Juice IT 5 лет назад 0
1
dave

net group WHATEVERсписки членов группы WHATEVER.

Эквивалентом для локальной группы является net localgroup WHATEVER.

К сожалению, он не включает в себя членство во вложенных группах (и даже не упоминает, что в группе есть другие группы, что делает вывод на самом деле несколько вводящим в заблуждение). grawity 5 лет назад 0