2

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

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

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

WMIC USERACCOUNT

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

2 ответа2

1

Вы можете просто использовать 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

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


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

0

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

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

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