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