假设我在Active Directory中有一个用户的用户ID。我想获得该用户当前所属的所有AD组的列表。如何从Windows命令行执行此操作?

我尝试了以下操作:

dsget user "DC=jxd123" -memberof


错误:

dsquery failed:'-memberof' is an unknown parameter.
type dsquery /? for help.


评论

当您执行dsget时,您肯定不会对dsquery出错。复制粘贴失败?

仅供参考,在StackOverflow上发现了相同的问题,并给出了更多答案。

我没有足够的声誉来回答,但是假设您使用的是Powershell,则可以这样编写:Get-ADPrincipalGroupMembership用户名|选择名称

#1 楼

您可以在PowerShell中轻松完成此操作。我确定您也可以使用ds工具来完成此操作,但它们又旧又硬,现在应将PowerShell用于所有可能的用途。

Import-Module ActiveDirectory
(Get-ADUser userName –Properties MemberOf | Select-Object MemberOf).MemberOf


更短的版本

(Get-ADUser userName –Properties MemberOf).MemberOf


评论


我下载了Powershell,现在有一个* .msu文件。如何使用* .msu文件安装它?

– MacGyver
13年8月19日在18:51

您在什么操作系统上? PowerShell内置于XP以外的任何版本中,并且XP作为可选的Windows Update可用。

– MDMarra
13年8月19日在18:53

Windows XP ..我的公司运行缓慢:-\

– MacGyver
13年8月19日在18:57

然后您下载了错误的安装程序。而且,仅需注意,XP支持将在不到一年的时间内终止。让升级动起来! microsoft.com/en-us/windows/endofsupport.aspx

– MDMarra
13年8月19日在18:58



Get-ADPrincipalGroupMembership是在PowerShell中执行此操作的另一种方法。

– Nic
13年8月20日在7:43

#2 楼

或使用net用户命令...

net user /domain username


评论


我喜欢某些“旧” DOS命令提供的简单性。而且,它们一直都在那儿,因此即使您没有在旧计算机上加载PoSH,DOS也能助您一臂之力!感谢您发布此信息。

–杰夫·摩登(Jeff Moden)
2014年11月4日在21:06

这将仅返回显式的组成员身份,而不返回隐式的组成员身份。

– Elias Probst
2014年11月5日22:45

流畅的命令,但是,输出中的组名将被截断为21个字符... :-(

–t0r0X
15年3月16日在13:37

是的,有限制。嵌套的组成员身份未显示,而您是正确的,输出将被截断。诚然,我没有考虑后者。

–杰克
2015年6月23日下午0:18

效果很好,但是为什么会被截断呢?是否可以为完整的组名添加配置/参数?

– ThinkCode
16年8月17日在14:44

#3 楼

单行,无需模块,使用当前登录的用户$($ env:username),可从其他Windows计算机上运行:

(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf


对此vbs / powershell文章的认可: http://technet.microsoft.com/zh-cn/library/ff730963.aspx

评论


很好的解决方案,它是唯一对我有用的解决方案,无需安装任何其他软件!谢谢!

–t0r0X
于15:46标记16年15日

+1可在没有任何其他软件的受限系统上工作!

–芥末酱
16年8月11日在7:50

#4 楼

找到了很好的资源:

http://social.technet.microsoft.com/wiki/contents/articles/2195.active-directory-dsquery-commands.aspx

从Windows命令提示符执行以下操作:

dsquery user -samid jxd123 | dsget user -memberof | dsget group -samid


#5 楼

PowerShell:

Get-ADPrincipalGroupMembership -Identity jdoe | Format-Table -Property name


#6 楼

如果需要查看自己的组,请使用whoami /groups


显示当前用户所属的用户组。


net user /domain username上执行此命令的原因是,隐式组成员身份也与whoami一起显示。

评论


最佳解决方案。已投票。简短而甜美。不截断。我个人最喜欢LIST格式,即whoami / groups / fo list,因为它是最容易用眼睛阅读的格式。

–彼得
17 Feb 17 '14:15



#7 楼

另一种方法:PowerShell脚本,该脚本列出Windows帐户令牌中的所有隐式组成员身份。在受限制的系统上工作。

$token = [System.Security.Principal.WindowsIdentity]::GetCurrent() 
ForEach($group in $token.Groups){
    $group.Translate([System.Security.Principal.NTAccount])
}


#8 楼

dsquery user -samid "user id" | dsget user -memberof > userid_memberof.txt


#9 楼

$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name


#10 楼

adfind是用于此类事情的另一种出色工具。它是MVP Joe Richards的免费工具。

http://www.joeware.net/freetools/tools/adfind/

您可以使用其中一种shortucts

adfind -sc u:username memberof


#11 楼

此PowerShell版本仅返回AD组名,而不返回组的DN。 “选择对象”输出可以轻松地通过管道传输到CSV或测试文件。

(Get-ADUser ExampleUser –Properties MemberOf).memberof | Get-ADGroup | Select-Object name

#12 楼

Powershell,提供了一个整洁的输出。

(get-aduser USER -Properties MemberOf | select MemberOf).MemberOf | % {$_.split(",")[0].replace("CN=","")}


#13 楼

这是一个搜索给定域下的所有域的解决方案(假设每个域都有适当的权限):

# provide the logon name here:
$user="alice"
$allGroups=@()

foreach ( $d in (Get-ADForest example.net).domains ) { Write-Output "Looking up $user in domain $d"; $allGroups += Get-ADPrincipalGroupMembership $user -ResourceContextServer $d }

$allGroups | ft name,GroupScope,distinguishedName -AutoSize


使用Get-ADPrincipalGroupMembership

#14 楼

试试这个:

gpresult -V /user blah