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

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

通过pipe理计算机 – > 本地用户/组 – > ,然后双击该组,可以查看组中的用户

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

    尝试

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

    这里是从命令提示符的另一种方式,不知道如何自动化,但因为你将不得不分析输出:

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

     net group <your_groupname> /domain 

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

     net localgroup <your_groupname> /domain 

    下面是我发现的更通常有用的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安装介质上的“支持工具”安装Admin Tools软件包,也可以从Microsoft下载站点下载。

    您还可以使用PowerShell执行这些查询。 PowerShell已经作为Server 2008,2008 R2和Windows 7的一个可安装function提供,但是您需要下载WinRM Framework以将其安装在XP或Vista上。

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

    • 对于Win 7和2008 R2客户端,您可以安装远程服务器pipe理工​​具 。 RSAT还要求您在Server 2008 R2域控制器或任何Server 2003/2008 DC的Active Directorypipe理网关服务上安装了Active Directory Web服务function。
    • 对于任何XP或更高版本的客户端,请下载并安装Active Directory的Quest ActiveRoles Management Shell 。 Quest工具不需要对您的DC进行任何其他更改。

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

     Import-Module ActiveDirectory Get-ADGroupMember "Domain Admins" -recursive | Select-Object name 

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

    在服务器和客户端上运行的一种非常简单的方法:

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

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

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

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

    使用PowerShell和Quest Software的Active Directory免费ActiveRolespipe理shell,您可以使用:

    (Get-QADGroup“GroupName”)。成员

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

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

    以下是获取组成员资格的示例查询:

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

    如何列出本地组和用户?

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

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

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