命令行列出 Windows Active Directory 组中的用户?

命令行列出 Windows Active Directory 组中的用户?

是否有命令行方式可以列出特定 Active Directory 组中的所有用户?

我可以去查看谁在群里管理计算机-->本地用户/组-->群组并双击该组。

我只需要一种命令行方式来检索数据,这样我就可以做一些其他自动化任务。

答案1

尝试

dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members

答案2

这是命令提示符的另一种方法,但不确定其自动化程度如何,因为您必须解析输出:

如果组是“全局安全组”:

net group <your_groupname> /domain

如果您正在寻找“域本地安全组”:

net localgroup <your_groupname> /domain

答案3

这是我发现更有用的 ds 命令版本,特别是当您具有复杂的 OU 结构并且不一定知道组的完整可分辨名称时。

dsquery group -samid "Group_SAM_Account_Name" | dsget group -members -expand

或者如果您知道该组的 CN,通常与 SAM ID 相同,如果名称中有空格则引用:

dsquery group -name "Group Account Name" | dsget group -members -expand

如评论中所述,默认情况下,ds* 命令(dsquery、dsget、dsadd、dsrm)仅在域控制器上可用。但是,您可以从 Windows Server 安装介质上的支持工具安装管理工具包,或者下载它来自 Microsoft 下载站点。

您也可以使用 PowerShell 执行这些查询。PowerShell 已作为 Server 2008、2008 R2 和 Windows 7 的可安装功能提供,但您需要下载 WinRM 框架在 XP 或 Vista 上安装它。

要访问 PowerShell 中任何特定于 AD 的 cmdlet,您需要需要执行以下至少一项安装:

答案4

一种在服务器和客户端上都有效的非常简单的方法:

NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%"

如果用户在 YOURGROUPNAME 组中则返回 1,否则返回 0

然后,您可以使用 %ERRORLEVEL% 值(如果用户在组中则为 0,否则为 1),例如

IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE

相关内容