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.