通过命令行列出 Windows 域组中的所有用户帐户?

通过命令行列出 Windows 域组中的所有用户帐户?

我想查找\创建一个命令来列出 Windows 域控制器(Server 2012 R2)上指定组中的所有用户帐户及其所有详细信息。

使用“net users”会很完美,但我不知道如何通过一个操作为所有用户输出此命令(即,如果我想了解详细信息,我需要为每个用户单独编写此命令)。

如果没有办法使用“网络用户”,那么

WMIC USERACCOUNT

也很好。但我还需要从指定组(企业管理员、域管理员等)获取信息。
我知道我可以使用 PowerShell,但我正在尝试寻找解决方案CMD

答案1

你可以使用电源外壳在批处理脚本中运行 cmd 中所需的逻辑,以获得两全其美的效果。我在下面放置了一个简单的示例,您只需将GroupName变量值更改为您需要查询的组,它就会像您期望的那样在 cmd 中为您提供该组成员的列表。

由于您说您正在域控制器上运行它,只需使用获取 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 对象循环然后迭代获取AD用户并根据需要从中提取特定属性。

批处理脚本(组成员以及其他详细信息)

@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

输出示例

在此处输入图片描述


更多资源

答案2

net group WHATEVER列出该组的成员WHATEVER

对于本地组来说,等同于net localgroup WHATEVER

相关内容