Flyer Asked: 2009-08-04 09:19:43 +0800 CST2009-08-04 09:19:43 +0800 CST 2009-08-04 09:19:43 +0800 CST 命令行列出 Windows Active Directory 组中的用户? 772 是否有命令行方式列出特定 Active Directory 组中的所有用户? 我可以通过转到管理计算机-->本地用户/组-->组并双击组来查看组中的人员。 我只需要一个命令行方式来检索数据,这样我就可以做一些其他的自动化任务。 windows active-directory 9 个回答 Voted asdasddfg 2010-01-05T12:11:26+08:002010-01-05T12:11:26+08:00 这是命令提示符的另一种方式,但不确定如何自动化,因为您必须解析输出: 如果组是“全局安全组”: net group <your_groupname> /domain 如果您正在寻找“域本地安全组”: net localgroup <your_groupname> /domain Ryan Fisher 2009-08-04T11:09:55+08:002009-08-04T11:09:55+08:00 这是 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,您还需要至少执行以下安装之一: 对于 Win 7 和 2008 R2 客户端,您可以安装Remote Server Admin Tools。RSAT 还要求您已在Server 2008 R2域控制器上安装 Active Directory Web 服务功能,或为任何Server 2003/2008 DC安装Active Directory 管理网关服务。 对于任何 XP 或更高版本的客户端,请下载并安装Quest ActiveRoles Management Shell for Active Directory。Quest 工具不需要对您的 DC 进行任何额外的更改。 Best Answer pQd 2009-08-04T09:22:48+08:002009-08-04T09:22:48+08:00 尝试 dsget group "CN=GroupName,DC=domain,DC=name,DC=com" -members pk. 2011-03-25T08:41:04+08:002011-03-25T08:41:04+08:00 对于不需要 Quest AD 加载项的 PowerShell 解决方案,请尝试以下操作 Import-Module ActiveDirectory Get-ADGroupMember "Domain Admins" -recursive | Select-Object name 这也将枚举嵌套组。如果您不想这样做,请删除-recursive开关。 deajan 2012-10-09T01:37:33+08:002012-10-09T01:37:33+08:00 在服务器和客户端上工作的一种非常简单的方法: NET GROUP "YOURGROUPNAME" /DOMAIN | find /I /C "%USERNAME%" 如果用户在 YOURGROUPNAME 组中,则返回 1,否则返回 0 然后您可以使用 %ERRORLEVEL% 值(如果用户在组中,则为 0,如果不是,则为 1),例如 IF %ERRORLEVEL%==0 NET USE %LOGONSERVER%\YOURGROUPSHARE Gordon Bell 2009-08-04T12:51:34+08:002009-08-04T12:51:34+08:00 使用 PowerShell 和 Quest Software 的针对 Active Directory 的免费 ActiveRoles 命令行管理程序,您可以使用: (Get-QADGroup "GroupName").Members http://www.quest.com/powershell/activeroles-server.aspx markshep 2011-04-01T02:34:57+08:002011-04-01T02:34:57+08:00 此处使用的答案dsget仅dsquery适用于 Windows 的服务器版本,因为这些命令未在其他版本的 Windows(例如 Windows 7)上提供。在没有这些命令的机器上,您可以使用AdFind 命令获得所需的信息。 这是获取组成员身份的示例查询: AdFind.exe -default -f name="Domain Admins" member -list vadim 2012-10-10T16:54:54+08:002012-10-10T16:54:54+08:00 对于UserGroup1try 的显示成员: dsquery group -name UserGroup1 | dsget group -members | dsget user -display Sysadmin 2015-01-15T11:12:12+08:002015-01-15T11:12:12+08:00 如何列出本地组和用户? 使用以下 powershell 脚本列出本地组和这些组的成员。 $server="YourServerName" $computer = [ADSI]"WinNT://$server,computer" $computer.psbase.children | where { $_.psbase.schemaClassName -eq 'group' } | foreach { write-host $_.name write-host "------" $group =[ADSI]$_.psbase.Path $group.psbase.Invoke("Members") | foreach { $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} write-host } 将上面的文字复制到记事本并另存为filename.ps1. 然后运行文件。我应该显示每个组中的组和用户,或者你可以从 powershell 运行它。
这是命令提示符的另一种方式,但不确定如何自动化,因为您必须解析输出:
如果组是“全局安全组”:
如果您正在寻找“域本地安全组”:
这是 ds 命令的一个版本,我发现它通常更有用,特别是如果您有一个复杂的 OU 结构并且不一定知道组的完整可分辨名称。
或者如果您知道组的 CN,通常与 SAM ID 相同,如果名称中有空格,请引用:
如评论中所述,默认情况下,ds* 命令(dsquery、dsget、dsadd、dsrm)仅在域控制器上可用。但是,您可以从 Windows Server 安装介质上的支持工具安装管理工具包,或从 Microsoft 下载站点下载。
您还可以使用 PowerShell 执行这些查询。PowerShell 已作为 Server 2008、2008 R2 和 Windows 7 的可安装功能提供,但您需要下载 WinRM 框架才能在 XP 或 Vista 上安装它。
要在 PowerShell 中访问任何特定于 AD 的 cmdlet,您还需要至少执行以下安装之一:
尝试
对于不需要 Quest AD 加载项的 PowerShell 解决方案,请尝试以下操作
这也将枚举嵌套组。如果您不想这样做,请删除-recursive开关。
在服务器和客户端上工作的一种非常简单的方法:
如果用户在 YOURGROUPNAME 组中,则返回 1,否则返回 0
然后您可以使用 %ERRORLEVEL% 值(如果用户在组中,则为 0,如果不是,则为 1),例如
使用 PowerShell 和 Quest Software 的针对 Active Directory 的免费 ActiveRoles 命令行管理程序,您可以使用:
(Get-QADGroup "GroupName").Members
http://www.quest.com/powershell/activeroles-server.aspx
此处使用的答案
dsget
仅dsquery
适用于 Windows 的服务器版本,因为这些命令未在其他版本的 Windows(例如 Windows 7)上提供。在没有这些命令的机器上,您可以使用AdFind 命令获得所需的信息。这是获取组成员身份的示例查询:
对于
UserGroup1
try 的显示成员:如何列出本地组和用户?
使用以下 powershell 脚本列出本地组和这些组的成员。
将上面的文字复制到记事本并另存为
filename.ps1
. 然后运行文件。我应该显示每个组中的组和用户,或者你可以从 powershell 运行它。