Вывести список всех учетных записей пользователей в доменной группе Windows через командную строку?
2
Я хотел бы найти \ создать команду для отображения всех учетных записей пользователей со всеми подробностями на контроллере домена Windows (Server 2012 R2) из указанной группы.
Использование «net users» было бы идеально, но я не знаю, как сделать вывод этой команды для всех пользователей за одно действие (т.е. мне нужно написать эту команду для каждого пользователя отдельно, если я хочу узнать подробности).
Если нет возможности использовать «Сетевые пользователи», то
WMIC USERACCOUNT
было бы тоже хорошо. Но мне также нужно получить информацию из указанной группы (администраторы предприятия, администраторы домена и т. Д.).
Я знаю, что могу использовать PowerShell, но я пытаюсь найти решение для CMD.
Вы можете просто использовать 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
Пример вывода
Кроме того, если вам нужно получить больше, чем просто члены группы запрашиваемой группы, вы можете сохранить эту информацию в переменной, а затем передать этот объект массива переменных в цикл 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 ^| %% {Get-ADUser $_.SamAccountName -Properties * ^| Select SamAccountName, DisplayName, Description, accountExpires, ScriptPath, HomeDrive ^| fl }>>"%PSScript%"
GOTO :EOF
Гектометр Спасибо! Я буду использовать PowerShell, если мне не удастся найти решение для CMD. Кажется, вывод не очень информативен. Затем я использую «Пользователи сети», я получаю много информации, такой как: Комментарий, последнее обновление пароля, последний вход в систему, членство в Глобальной группе и т. Д. Я думаю, мне нужно изменить «Выбрать имя объекта» на «Выбрать»?
Ник
Ага. «Я хотел бы найти \ создать команду для перечисления всех учетных записей пользователей со всеми деталями», - моя формулировка была не очень хороша.
Ник
@Nick Все эти детали для каждой учетной записи ... Get-ADUser "<username>" -Properties *из того, что я могу сказать при тестировании, чтобы вы хотели знать членов группы, а затем для каждого из этих участников вы хотите получить все подробности из этой команды?
Сок Pimp IT
@Nick Я только что обновил свой ответ с более подробной информацией и небольшим примером, но вот как это работает, и это тоже не так сложно. Вы можете расширить это и получить другие свойства и значения, при необходимости указать другой формат и т. Д. Помогите мне более точно понять, какие значения вам нужны, и я посмотрю, смогу ли я помочь дальше, но эту логику вы могли бы использовать и получить остальное тривиально оттуда.
Сок Pimp IT
@Nick Наконец, FYI в случае , если вы заинтересованы ... Я использовал такие команды, как ldifde, dsget groupи dsquery groupдля аналогичных целей в прошлом , но PowerShell является способом проще и надежнее. Некоторые из этих команд становятся длинными и безобразными, и я не помню, дает ли это все детали, которые вам нужны. Я тоже искал решение для cmd много лет назад, и это то, что я выкопал из старого набора сценариев, которые я использовал в прошлом ... PowerShell должен быть подходом для решения задач Windows Domain Admin с этой задачей, я думаю. Вы все равно можете запустить его через пакет или cmd.exe в любом случае. Удачи независимо!
Сок Pimp IT
0
net group WHATEVERсписки членов группы WHATEVER.
Эквивалентом для локальной группы является net localgroup WHATEVER.
К сожалению, оно не включает в себя членство во вложенных группах (и даже не упоминание о том, что в состав группы входят другие группы, что делает ее вывод на самом деле несколько вводящим в заблуждение).
Get-ADUser "<username>" -Properties *
из того, что я могу сказать при тестировании, чтобы вы хотели знать членов группы, а затем для каждого из этих участников вы хотите получить все подробности из этой команды?ldifde
,dsget group
иdsquery group
для аналогичных целей в прошлом , но PowerShell является способом проще и надежнее. Некоторые из этих команд становятся длинными и безобразными, и я не помню, дает ли это все детали, которые вам нужны. Я тоже искал решение для cmd много лет назад, и это то, что я выкопал из старого набора сценариев, которые я использовал в прошлом ... PowerShell должен быть подходом для решения задач Windows Domain Admin с этой задачей, я думаю. Вы все равно можете запустить его через пакет или cmd.exe в любом случае. Удачи независимо!net group WHATEVER
списки членов группыWHATEVER
.Эквивалентом для локальной группы является
net localgroup WHATEVER
.источник