Obter lista de grupos do AD dos quais um usuário é membro


52

Suponha que eu tenha a identificação de usuário de um usuário no Active Directory. Eu gostaria de obter uma lista de todos os grupos do AD nos quais esse usuário atualmente é membro. Como posso fazer isso na linha de comando do Windows?

Eu tentei o seguinte:

dsget user "DC=jxd123" -memberof

Erro:

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

3
Você certamente não receberá um erro para dsquery ao executar o dsget. Falha ao copiar e colar?
mfinni

Para sua informação, encontrei a mesma pergunta no StackOverflow com mais algumas respostas.
20413 Nic

Não tenho reputação suficiente para responder, mas, supondo que você esteja usando o PowerShell, você pode escrever o seguinte: Get-ADPrincipalGroupMembership username | selecione o nome
Avi Parshan 10/09

Respostas:


33

Você pode fazer isso no PowerShell com bastante facilidade. Tenho certeza de que você também pode fazê-lo com as ferramentas ds, mas elas são antigas e complicadas e o PowerShell deve ser usado para tudo o que é possível atualmente.

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

Versão mais curta

(Get-ADUser userName –Properties MemberOf).MemberOf

Eu baixei o Powershell e agora tenho um arquivo * .msu. Como instalo usando o arquivo * .msu?
21713 MacGyver

Em qual sistema operacional você está? O PowerShell está embutido em algo mais novo que o XP e está disponível para o XP como um Windows Update opcional.
precisa saber é o seguinte

Windows XP .. Minha empresa é lenta: - \
MacGyver

Então você baixou o instalador errado. Além disso, apenas um alerta, o suporte ao XP termina em menos de um ano. Receba atualizações em movimento! microsoft.com/en-us/windows/endofsupport.aspx
MDMarra

11
Get-ADPrincipalGroupMembershipé outra maneira de fazer isso no PowerShell.
20413 Nic

83

Ou com o comando net user ...

net user /domain username

3
Eu amo a simplicidade que alguns dos comandos "antigos" do DOS oferecem. E eles sempre estiveram lá; mesmo que você não tenha o PoSH carregado em uma máquina antiga, o DOS vem em socorro! Obrigado por postar isso.
Jeff Moden

3
Isso retornará apenas associações de grupo explícitas, mas não implícitas.
Elias Probst

11
Comando Slick, MAS, os nomes de grupos na saída são truncados para 21 caracteres ... :-(
t0r0X

11
Sim, existem limitações. As associações de grupos aninhados não são mostradas e você está certo, a saída é truncada. É certo que eu não havia considerado o último.
Jack

Funcionou muito bem, mas por que seria truncado? Existe uma configuração / parâmetro que pode ser adicionado para o nome completo do grupo?
ThinkCode 17/08/16

36

A linha única, sem necessidade de módulos, usa o usuário registrado atual $ ($ env: username), é executado a partir de outras máquinas Windows:

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

Parabéns a este artigo do vbs / powershell: http://technet.microsoft.com/en-us/library/ff730963.aspx


2
Solução muito boa, a única que funcionou para mim sem instalar nenhum software adicional! Obrigado!
t0r0X

2
+1 por trabalhar em um sistema restrito sem nenhum software adicional!
Saustrup 11/08/16


8

PowerShell:

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

7

Se você precisa ver seus próprios grupos, há whoami /groups:

Exibe os grupos de usuários aos quais o usuário atual pertence.

A vantagem desse comando net user /domain usernameé que as associações implícitas ao grupo também são exibidas whoami.


Melhor solução. Votado. Curto e grosso. Não trunca. Pessoalmente, eu gosto mais do formato LIST, ou seja whoami /groups /fo list, porque é o mais fácil de ler com os olhos.
Peterh

6

Outra abordagem: um script do PowerShell que lista todas as participações implícitas do grupo no token da conta do Windows. Funciona em um sistema restrito.

$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

Esta versão do PowerShell retorna apenas os nomes dos grupos do AD, em vez do DN do grupo. A saída 'select-object' pode ser facilmente canalizada para um arquivo CSV ou de teste.

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


0

Powershell, fornece uma saída agradável e limpa.

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

0

Aqui está uma solução pesquisando todos os domínios no domínio fornecido (assumindo a permissão adequada para cada domínio):

# 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

Usando Get-ADPrincipalGroupMembership


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.