获取用户所属的广告组列表


52

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

我尝试了以下方法:

dsget user "DC=jxd123" -memberof

错误:

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

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

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

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

Answers:


33

您可以在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 2013年

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

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

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

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

83

或使用net user命令...

net user /domain username

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

3
这只会返回显式的组成员身份,而不返回隐式的组成员身份。
Elias Probst 2014年

11
平滑的命令,但是,输出中的组名将被截断为21个字符... :-(
t0r0X 2015年

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

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

36

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

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

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


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

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


8

电源外壳:

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

7

如果您需要查看自己的群组,则可以whoami /groups

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

该命令的优势net user /domain username在于,隐式组成员身份也显示为whoami


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

6

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

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

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

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


1

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

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


0

Powershell,提供了一个漂亮干净的输出。

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

0

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

# 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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.