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


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

我可以通过去看看谁在小组中 管理电脑  - > 本地用户/组  - >  并双击该组。

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


123
2017-08-03 17:19






答案:


尝试

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

37
2017-08-03 17:22



您可能需要多做一些工作才能解析嵌套组中的成员和重复成员。 - duffbeer703
dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members -expand 获取嵌套组中的成员,虽然它可能对重复项没有帮助,它为您提供了成员的完整AD查询字符串,而不仅仅是他们的CN。 - jonnybot
在Win7 SP1上找不到命令。我猜你需要安装RSAT吗? - Iszi
'dsget'不被识别为内部或外部命令等。 - adolf garlic
@adolfgarlic - stackoverflow.com/questions/8514599/... - bchilders


这是命令提示符的另一种方式,不知道如何自动化,因为你必须解析输出:

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

net group <your_groupname> /domain

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

net localgroup <your_groupname> /domain

207
2018-01-04 20:11



不确定为什么这个被downvoted ...输出可能需要一点解析,但它的优点是只依赖于作为基本Windows安装的一部分的实用程序。 - G-Wiz
但有没有办法绕过截断的组名? - deed02392
这很棒!做了一个享受。 - WOPR
请注意,这不是递归的,也不会列出组中的组。如果您有嵌套或分层组,则不是很有帮助。 - Mark
这对我来说非常有效(并与之携手并进 net user /domain)。谢谢! - xan


这是我发现更常用的ds命令的一个版本,特别是如果你有一个复杂的OU结构,并且不一定知道该组的完整可分辨名称。

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

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

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

如注释中所述,缺省情况下,ds *命令(dsquery,dsget,dsadd,dsrm)仅在域控制器上可用。但是,您可以从Windows Server安装媒体上的支持工具安装Admin Tools包 下载它 来自Microsoft下载站点。

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

要在PowerShell中访问任何特定于AD的cmdlet,您将会这样做  需要至少执行以下安装之一:


48
2017-08-03 19:09



我一直使用第一个查询 - Jim B
请注意,您必须在域控制器上运行此命令。 - skolima
您 不要 必须在域控制器上运行此命令。但是,你 做 需要安装Admin Support Pack .msi,它包含在Windows 2003 Server CDROM上的支持工具中。或者从中下载 microsoft.com/downloads/en/... - Ryan Fisher


对于不需要Quest AD加载项的PowerShell解决方案,请尝试以下操作

Import-Module ActiveDirectory

Get-ADGroupMember "Domain Admins" -recursive | Select-Object name

这也将枚举嵌套组。如果您不希望这样做,请删除 -recursive 开关。


23
2018-03-24 16:41



您是正确的,ActiveDirectory模块不需要Quest ActiveRoles AD管理单元,但它确实要求您安装了RSAT工具,并且您的AD至少有一个带有Active Directory Web服务的DC(适用于2008)安装了R2)或Active Directory管理网关服务(适用于2003,2008 DC)。有关详细信息和链接,请参阅上面的答案 - Ryan Fisher


一种适用于服务器和客户端的简单方法:

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

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

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

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

14
2017-10-08 09:37



“net group”命令仅搜索计算机加入的域(或域树)。更现代的替代方案是: whoami /groups | find /I /C "YOURGROUPNAME" - DavisNT


使用PowerShell和Quest Software的Active Directory免费ActiveRoles管理外壳,您可以使用:

(Get-QADGroup“GroupName”)。成员

http://www.quest.com/powershell/activeroles-server.aspx


10
2017-08-03 20:51



另外:Get-QADGroupMember'GroupName' - Gordon Bell


这里的答案使用 dsgetdsquery 仅适用于Windows的服务器版本,因为其他版本的Windows(例如Windows 7)不提供这些命令。在没有这些命令的计算机上,您可以使用该命令获取所需信息 AdFind命令

以下是获取组成员身份的示例查询:

AdFind.exe -default -f name="Domain Admins" member -list

7
2018-03-31 10:34



ADFind.exe是您必须安装的第三方工具。 ds *命令可通过Admin Tools包安装。 - Ryan Fisher