Obtenir la liste des groupes AD dont un utilisateur est membre


52

Supposons que j'ai l'identifiant d'un utilisateur dans Active Directory. Je voudrais obtenir une liste de tous les groupes AD dans lesquels cet utilisateur est actuellement membre. Comment puis-je faire cela à 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.

3
Vous ne recevrez certainement pas d'erreur pour dsquery lorsque vous exécuterez dsget. Copier et coller échouer?
Mfinni

FYI, a trouvé la même question sur StackOverflow avec quelques réponses supplémentaires.
Nic

Je n'ai pas assez de réputation pour répondre, mais en supposant que vous utilisiez powershell, vous pouvez écrire ceci: Get-ADPrincipalGroupMembership nom d'utilisateur | Choisissez un nom
Avi Parshan

Réponses:


33

Vous pouvez le faire dans PowerShell assez facilement. Je suis sûr que vous pouvez le faire aussi 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

J'ai téléchargé Powershell et j'ai maintenant un fichier * .msu. Comment puis-je l'installer à l'aide du fichier * .msu?
MacGyver

Quel système d'exploitation utilisez-vous? PowerShell est intégré à tout ce qui est plus récent que XP et est disponible pour XP en tant que mise à jour Windows facultative.
MDMarra

Windows XP .. Mon entreprise est lente: - \
MacGyver

Ensuite, vous avez téléchargé le mauvais programme d'installation. De plus, le support technique de XP prend fin en un peu moins d’un an. Obtenez des mises à niveau en mouvement! microsoft.com/en-us/windows/endofsupport.aspx
MDMarra

1
Get-ADPrincipalGroupMembershipest une autre façon de faire cela dans PowerShell.
Nic

83

Ou avec la commande net user ...

net user /domain username

3
J'adore la simplicité offerte par certaines "anciennes" commandes DOS. Et, ils ont toujours été là, alors même si vous n'avez pas chargé PoSH sur une vieille machine, DOS vient à la rescousse! Merci d'avoir posté ceci.
Jeff Moden

3
Cela ne fera que renvoyer des appartenances de groupe explicites, mais non implicites.
Elias Probst

11
Commande Slick, MAIS, les noms des groupes dans la sortie sont tronqués à 21 caractères ... :-(
t0r0X

1
Oui, il y a des limites. Les appartenances à un groupe imbriqué ne sont pas affichées et vous avez raison, la sortie est tronquée. Certes, je n'avais pas envisagé ce dernier.
Jack

A bien fonctionné mais pourquoi serait-il tronqué? Existe-t-il un paramètre / configuration pouvant être ajouté pour un nom de groupe complet?
ThinkCode

36

Une seule ligne, aucun module nécessaire, utilise l’utilisateur connecté actuel $ ($ env: nomutilisateur), 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


2
Très bonne solution, la seule qui a fonctionné pour moi sans installer de logiciel supplémentaire! Merci!
t0r0X

2
+1 pour travailler sur un système restreint sans logiciel supplémentaire!
Saustrup


8

PowerShell:

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

7

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

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

L'avantage de cette commande net user /domain usernameest que les appartenances implicites à un groupe sont également affichées avec whoami.


Meilleure solution. Upvote. Court et doux. Ne pas tronquer. Personnellement, je préfère le format LIST, c’est-à-dire whoami /groups /fo listqu’il est le plus facile à lire à l’œil.
peterh

6

Une autre approche: un script PowerShell qui répertorie toutes les appartenances implicites à un groupe à 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])
}

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

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

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


0

Powershell, donne une sortie agréable et propre.

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

0

Voici une solution recherchant tous les domaines dans le domaine donné (en supposant que l’autorisation appropriée est attribuée à 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


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.