it-swarm.cn

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

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

通过转到管理计算机-> 本地用户/组-> 并双击该组,可以看到谁在组中。

我只需要一种命令行方式即可检索数据,因此我可以执行其他一些自动化任务。

138
Flyer

尝试

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

这是命令提示符的另一种方式,虽然不确定输出的自动化程度,但是不确定如何自动化:

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

net group <your_groupname> /domain

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

net localgroup <your_groupname> /domain
243
asdasddfg

这是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 Framework 才能将其安装在XP或Vista。

要访问PowerShell中任何特定于AD的cmdlet,您将[~~~]也[〜#〜]需要执行以下至少一项安装:

49
Ryan Fisher

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

Import-Module ActiveDirectory

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

这还将枚举嵌套的组。如果您不想这样做,请删除-recursive开关。

25
pk.

在服务器和客户端上工作的非常简单的方法:

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

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

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

IF %ERRORLEVEL%==0 Net Use %LOGONSERVER%\YOURGROUPSHARE
17
deajan

使用PowerShell和Quest Software的Active Directory免费ActiveRoles命令行管理程序,您可以使用:

(Get-QADGroup“ GroupName”)。成员

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

10
Gordon Bell

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

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

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

如何列出本地组和用户?

使用以下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运行它。

4
Sysadmin

对于UserGroup1的显示成员,请尝试:

dsquery group -name UserGroup1 | dsget group -members | dsget user -display
3
vadim