157 votes

Comment obtenir tous les groupes dont un utilisateur est membre ?

L'outil PowerShell Get-ADGroupMember cmdlet renvoie les membres d'un groupe spécifique. Existe-t-il une cmdlet ou une propriété permettant d'obtenir tous les groupes dont un utilisateur particulier est membre ?


J'ai réparé mon erreur : Get-Member devrait être Get-ADGroupMember .

1 votes

Voir stackoverflow.com/questions/668321/ y technet.microsoft.com/fr/us/library/dd315351.aspx . Êtes-vous sûr que Get-Member fait ce que vous pensez qu'il fait ?

2 votes

Rapidement, vous pouvez utiliser net user /domain username Consultez également d'autres méthodes à l'adresse suivante Obtenir les groupes dans lesquels un utilisateur est membre en utilisant PowerShell

316voto

kstrauss Points 3092

Get-ADPrincipalGroupMembership permet de le faire.

Get-ADPrincipalGroupMembership username | select name

name
----
Domain Users
Domain Computers
Workstation Admins
Company Users
Company Developers
AutomatedProcessingTeam

1 votes

Cela m'a évité d'utiliser la méthode la plus compliquée et la plus longue pour trouver cette information. Je savais que Powershell aurait quelque chose comme ça, mais je ne l'ai trouvé nulle part. +1

11 votes

Notez que cela dépend de la disponibilité du module ActiveDirectory. Cela ne fonctionnera pas nécessairement sur une machine cliente où vous exécutez un script PowerShell, ou sur des clients de niveau inférieur. Si vous voulez faire cela, utilisez cette solution .

0 votes

J'ai essayé cette méthode mais j'ai constaté qu'elle ne renvoie que le groupe "Utilisateurs du domaine" pour chaque utilisateur.

104voto

Canoas Points 321

Ligne unique, aucun module nécessaire, utilise l'utilisateur connecté actuel :

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

Bravo pour cet article sur vbs/powershell : http://technet.microsoft.com/en-us/library/ff730963.aspx

7 votes

Merci, j'apprécie cette version sans modules. J'ai simplement changé la variable de $env:username a $username et fixé avec $username = "testuser" pour effectuer facilement des substitutions de variables pour d'autres recherches d'utilisateurs.

1 votes

Je viens juste de revenir ici grâce à Google ! Toujours utile dans des situations aléatoires où les outils AD ne sont pas disponibles.

0 votes

Ne fonctionne pas correctement pour les membres imbriqués du groupe par défaut de l'utilisateur. Voir ici : stackoverflow.com/questions/53451706/

55voto

Daniel.S Points 63

Une alternative plus concise à celle postée par Canoas, pour obtenir l'appartenance à un groupe pour l'utilisateur actuellement connecté.

J'ai découvert cette méthode dans cet article de blog : http://www.travisrunyard.com/2013/03/26/auto-create-outlook-mapi-user-profiles/

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof

Une version encore meilleure qui utilise une expression rationnelle pour supprimer les informations LDAP et ne laisser que les noms de groupes :

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof -replace '^CN=([^,]+).+$','$1'

Vous trouverez plus de détails sur l'utilisation de l'accélérateur de type [ADSISEARCHER] sur le blog du scripting guy : http://blogs.technet.com/b/heyscriptingguy/archive/2010/08/24/use-the-powershell-adsisearcher-type-accelerator-to-search-active-directory.aspx

38voto

user4511672 Points 371

La vieille école de CMD :

net user mst999 /domain

1 votes

Il fonctionne également sur les machines clientes sans outils AD supplémentaires.

10 votes

Malheureusement - si les noms de vos groupes sont longs (c'est-à-dire > 21 caractères), ils seront tronqués...

0 votes

Celui-là bat tous les autres ! Bravo

27voto

schmeckendeugler Points 261
(GET-ADUSER –Identity USERNAME –Properties MemberOf | Select-Object MemberOf).MemberOf

0 votes

Merci ! Cela a fonctionné. Le seul inconvénient est que la valeur renvoyée est une chaîne de caractères.

3 votes

| get-adgroup donnera en sortie les objets du groupe. Génial !

2 votes

Ou, utilisez $env:USERNAME à la place pour récupérer le nom d'utilisateur de l'utilisateur actuellement connecté

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X