web-dev-qa-db-fra.com

Obtenir la liste des groupes AD dont un utilisateur est membre

Supposons que j'ai l'ID utilisateur d'un utilisateur dans Active Directory. Je souhaite obtenir une liste de tous les groupes AD dont cet utilisateur est actuellement membre. Comment puis-je le faire à partir de la ligne de commande Windows?

J'ai essayé ce qui suit:

dsget user "DC=jxd123" -memberof

Erreur:

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

Vous pouvez le faire assez facilement dans PowerShell. Je suis sûr que vous pouvez aussi le faire avec les outils ds, mais ils sont vieux et croustillants et PowerShell devrait être utilisé pour tout ce qui est possible de nos jours.

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

Version plus courte

(Get-ADUser userName –Properties MemberOf).MemberOf
37
MDMarra

Ou avec la commande Net User ...

Net User /domain username
86
Jack

Une seule ligne, aucun module nécessaire, utilise l'utilisateur actuellement connecté $ ($ env: nom d'utilisateur), s'exécute à partir d'autres machines Windows:

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

Qudos à cet article vbs/powershell: http://technet.Microsoft.com/en-us/library/ff730963.aspx

40
Canoas

Trouvé une bonne ressource:

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

Voici comment procéder à partir de l'invite de commande Windows:

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

PowerShell:

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

Si vous avez besoin de voir vos propres groupes, il y a whoami /groups :

Affiche les groupes d'utilisateurs auxquels appartient l'utilisateur actuel.

L'avantage de cette commande sur Net User /domain username signifie que les appartenances aux groupes implicites sont également affichées avec whoami.

8
Dmitry Grigoryev

Autre approche: un script PowerShell qui répertorie toutes les appartenances aux groupes implicites à partir du jeton de compte Windows. Fonctionne sur un système restreint.

$token = [System.Security.Principal.WindowsIdentity]::GetCurrent() 
ForEach($group in $token.Groups){
    $group.Translate([System.Security.Principal.NTAccount])
}
6
ofthelit
dsquery user -samid "user id" | dsget user -memberof > userid_memberof.txt
3
Vibhat

adfind est un autre excellent outil pour ce genre de chose. C'est un outil gratuit du MVP Joe Richards

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

Vous pouvez utiliser l'un des raccourcis

adfind -sc u:username memberof
2
Mike Kline
$ADUser = Read-Host "Provide the AD User account"
Get-ADPrincipalGroupMembership -Identity $ADUser | Sort-Object name | Format-Table -Expand name
2
Bill Ou

Cette version PowerShell renvoie uniquement les noms de groupe AD, plutôt que le DN du groupe. La sortie "select-object" peut facilement être dirigée vers un fichier CSV ou de test.

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

1
Nicholas Leader

Powershell, donne une sortie agréable et propre.

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

Voici une solution recherchant tous les domaines sous le domaine donné (en supposant une autorisation appropriée pour chaque domaine):

# 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

Utilisation de Get-ADPrincipalGroupMembership

0
Thomas