Ottieni l'elenco dei gruppi di annunci di cui un utente è membro


52

Supponiamo di avere l'ID utente di un utente in Active Directory. Vorrei ottenere un elenco di tutti i gruppi AD di cui l'utente è attualmente membro. Come posso farlo dalla riga di comando di Windows?

Ho provato quanto segue:

dsget user "DC=jxd123" -memberof

Errore:

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

3
Certamente non riceverai un errore per dsquery quando esegui dsget. Copia e incolla fallito?
mfinni,

Cordiali saluti, ho trovato la stessa domanda su StackOverflow con un paio di risposte in più.
Nic,

Non ho abbastanza reputazione per rispondere, ma supponendo che tu stia usando PowerShell, puoi scrivere questo: Get-ADPrincipalGroupMembership username | seleziona il nome
Avi Parshan il

Risposte:


33

Puoi farlo facilmente in PowerShell. Sono sicuro che puoi farlo anche con gli strumenti ds, ma sono vecchi e croccanti e PowerShell dovrebbe essere usato per tutto il possibile al giorno d'oggi.

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

Versione più corta

(Get-ADUser userName –Properties MemberOf).MemberOf

Ho scaricato Powershell e ora ho un file * .msu. Come lo installo usando il file * .msu?
MacGyver,

Su quale sistema operativo sei? PowerShell è integrato in qualcosa di più recente di XP ed è disponibile per XP come Windows Update opzionale.
MDMarra,

Windows XP .. La mia compagnia è lenta: - \
MacGyver

Quindi hai scaricato il programma di installazione errato. Inoltre, solo un avvertimento, il supporto XP termina in poco meno di un anno. Muovi gli aggiornamenti! microsoft.com/en-us/windows/endofsupport.aspx
MDMarra

1
Get-ADPrincipalGroupMembershipè un altro modo per farlo in PowerShell.
Nic,

83

O con il comando net user ...

net user /domain username

3
Adoro la semplicità offerta da alcuni dei "vecchi" comandi DOS. E sono sempre stati lì, quindi anche se non hai PoSH caricato su una vecchia macchina, DOS viene in soccorso! Grazie per aver pubblicato questo
Jeff Moden,

3
Ciò restituirà solo appartenenze a gruppi espliciti, ma non impliciti.
Elias Probst,

11
Comando slick, MA, i nomi dei gruppi nell'output vengono troncati a 21 caratteri ... :-(
t0r0X

1
Sì, ci sono delle limitazioni. Le appartenenze ai gruppi nidificati non vengono visualizzate e hai ragione, l'output viene troncato. Certo, non avevo considerato quest'ultimo.
Jack,

Ha funzionato alla grande ma perché dovrebbe essere troncato? Esiste un parametro / config che può essere aggiunto per il nome completo del gruppo?
ThinkCode

36

Linea singola, nessun modulo necessario, utilizza l'utente attualmente registrato $ ($ env: nome utente), viene eseguito da altri computer Windows:

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

Qudos a questo articolo vbs / powershell: http://technet.microsoft.com/en-us/library/ff730963.aspx


2
Ottima soluzione, l'unica che ha funzionato per me senza installare alcun software aggiuntivo! Grazie!
t0r0X

2
+1 per lavorare su un sistema limitato senza alcun software aggiuntivo!
Saustrup,


8

PowerShell:

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

7

Se hai bisogno di vedere i tuoi gruppi, c'è whoami /groups:

Visualizza i gruppi di utenti a cui appartiene l'utente corrente.

Il vantaggio di questo comando net user /domain usernameè che vengono visualizzate anche le appartenenze ai gruppi implicite whoami.


Soluzione migliore. Upvoted. Breve e dolce Non tronca. Personalmente mi piace di più il formato ELENCO, ovvero whoami /groups /fo listperché è il più facile da leggere con gli occhi.
Pietro,

6

Un altro approccio: uno script di PowerShell che elenca tutte le appartenenze ai gruppi implicite dal token dell'account di Windows. Funziona su un sistema limitato.

$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

Questa versione di PowerShell restituisce solo i nomi dei gruppi AD, anziché il DN del gruppo. L'output di "select-object" può essere facilmente reindirizzato a un file CSV o di prova.

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


0

Powershell, offre un output piacevole e pulito.

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

0

Ecco una soluzione che cerca tutti i domini nel dominio specificato (assumendo l'autorizzazione appropriata per ciascun dominio):

# 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

Utilizzo di Get-ADPrincipalGroupMembership


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.