- forum
- PowerShell
- Entraide pour les débutants
- Comment obtenir les groupes dont un utilisateur est membre
Résolu
Comment obtenir les groupes dont un utilisateur est membre
- R41L
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 2 ans 6 mois - il y a 2 ans 6 mois #31428
par R41L
Comment obtenir les groupes dont un utilisateur est membre a été créé par R41L
Bonjour les Powershelleurs !
Je fais appelle à vos lumières car je suis "bloqué" sur un de mes scripts. Le but du script est de récupérer les groupes dont un utilisateur est membre. J'ai un AD avec des Groupes Globaux et des Groupes de Domaine Locale pour gérer le partage NTFS.
Quand j'utilise mon script, à la fin, le fichier .txt qui s'ouvre est vide. Au début je pensais que j'avais fait une erreur (quelque part c'est le cas) mais en réalité pas vraiment... Je m'explique : mon fichier .txt est vide car le champ MemberOf de mes utilisateurs est vide. Si j'exécute uniquement la commande suivante, je me retrouve avec le champ MemberOf affichant {}
Pourtant dans mon AD, quand je clique sur les Propriétés d'un utilisateur, dans Membre de j'ai bien plusieurs groupes (mes GG). Forcément, j'ai l'impression de louper un truc mais je n'arrive pas à savoir ce que c'est. Surtout que j'ai quasi fait pareil pour récupérer les membres d'un groupe dans un autre script et que ça fonctionne très bien...
Je vous remercie par avance pour toute aide que vous pourriez m'apporter.
Bien à vous,
P.S : Voici mon script
Je fais appelle à vos lumières car je suis "bloqué" sur un de mes scripts. Le but du script est de récupérer les groupes dont un utilisateur est membre. J'ai un AD avec des Groupes Globaux et des Groupes de Domaine Locale pour gérer le partage NTFS.
Quand j'utilise mon script, à la fin, le fichier .txt qui s'ouvre est vide. Au début je pensais que j'avais fait une erreur (quelque part c'est le cas) mais en réalité pas vraiment... Je m'explique : mon fichier .txt est vide car le champ MemberOf de mes utilisateurs est vide. Si j'exécute uniquement la commande suivante, je me retrouve avec le champ MemberOf affichant {}
Get-AdUser -Identity n.prenom -Properties Memberof
Pourtant dans mon AD, quand je clique sur les Propriétés d'un utilisateur, dans Membre de j'ai bien plusieurs groupes (mes GG). Forcément, j'ai l'impression de louper un truc mais je n'arrive pas à savoir ce que c'est. Surtout que j'ai quasi fait pareil pour récupérer les membres d'un groupe dans un autre script et que ça fonctionne très bien...
Je vous remercie par avance pour toute aide que vous pourriez m'apporter.
Bien à vous,
P.S : Voici mon script
# Script PowerShell pour connaître les groupes dont l'utilisateur est membre
# Script interactif v.1 du 11/10/21 - Crée par #R41L
#Informations générales
$date = Get-Date -Format "dd-MM-yyyy"
Echo "Le $date - Obtenir les groupes dont l'utilisateur est membres"
#Lister les utilisateurs du domaine :
$Userslist = Get-ADUser -Filter * | Select-Object SamAccountName | Sort-Object SamAccountName
Get-ADUser -Filter * | Select-Object SamAccountName | Sort-Object SamAccountName > C:\Scripts\LOGS\userslist.txt
Write-Host "Voici les différents utilisateurs présents dans l'AD :"
Get-content -path C:\Scripts\Logs\userslist.txt#Demander le nom de l'utilisateur
$user = Read-Host "Choisissez l'ID d'un utilisateur (ex: n.prenom)"
#Filtrage, sélection des données et export du groupe choisi
Get-ADUser $user -Properties memberof | Select-Object memberof -ExpandProperty memberof | Export-Csv UsersGroups.txt -Encoding UTF8
start notepad.exe UsersGroups.txt
Dernière édition: il y a 2 ans 6 mois par R41L. Raison: Résolu
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 6 mois #31429
par ericlm128
Réponse de ericlm128 sur le sujet Comment obtenir les groupes dont un utilisateur est membre
Si tu est sur que ton $user existe tu peux regarder ceci : social.technet.microsoft.com/Forums/en-U...ome-users?forum=ITCG
Même si ton code parais correcte, tu peux aussi essayer ceci :
Même si ton code parais correcte, tu peux aussi essayer ceci :
(Get-ADUser userName –Properties MemberOf).MemberOf
Connexion ou Créer un compte pour participer à la conversation.
- R41L
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 2 ans 6 mois #31431
par R41L
Réponse de R41L sur le sujet Comment obtenir les groupes dont un utilisateur est membre
Bonjour Eric,
Décidément, merci bcp pour ton aide. J'ai consulté le lien que tu m'as transmis et j'ai pu résoudre une partie de mon problème.
Mon utilisateur existe bien, je demande justement à l'AD de m'afficher les utilisateurs. Lorsque j'utilise ta suggestion de code ou encore celle ci :
et bien cela fonctionne. Dans la console j'ai bien les groupes qui s'affichent pour chaque utilisateur. Par contre maintenant, dès que j'utilise un pipe pour faire un Export-csv ou bien que j'utilise > pour rediriger le résultat vers un fichier et ensuite lancer ce fichier pour obtenir le résultat, la j'obtiens dans les deux cas :
#TYPE System.String
"Length"
"87"
"84"
Faut-il que je pipe en utilisant Select-Object avant de faire une redirection de la sortie ou bien un Export ?
Par avance, merci pour ton retour.
Décidément, merci bcp pour ton aide. J'ai consulté le lien que tu m'as transmis et j'ai pu résoudre une partie de mon problème.
Mon utilisateur existe bien, je demande justement à l'AD de m'afficher les utilisateurs. Lorsque j'utilise ta suggestion de code ou encore celle ci :
$usgrp = get-aduser $user -properties *
$ugrp.memberof
et bien cela fonctionne. Dans la console j'ai bien les groupes qui s'affichent pour chaque utilisateur. Par contre maintenant, dès que j'utilise un pipe pour faire un Export-csv ou bien que j'utilise > pour rediriger le résultat vers un fichier et ensuite lancer ce fichier pour obtenir le résultat, la j'obtiens dans les deux cas :
#TYPE System.String
"Length"
"87"
"84"
Faut-il que je pipe en utilisant Select-Object avant de faire une redirection de la sortie ou bien un Export ?
Par avance, merci pour ton retour.
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 6 mois #31432
par ericlm128
Réponse de ericlm128 sur le sujet Comment obtenir les groupes dont un utilisateur est membre
Connexion ou Créer un compte pour participer à la conversation.
- R41L
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 2 ans 6 mois #31433
par R41L
Réponse de R41L sur le sujet Comment obtenir les groupes dont un utilisateur est membre
Re Eric,
Pendant un instant j'ai eu peur car les modifs que j'avais effectué hier ne semblaient plus fonctionner... Bon il se trouve que maintenant je dois lancer tous mes scripts en mode administrateur sinon ils ne fonctionnent pas... Je ne comprends pas pourquoi... Sachant que le même script en mode administrateur fonctionne parfaitement. Bref... Passons.
Voici les différents codes que j'ai essayé :
ou
ou même
Aucun de ces codes ne m'affichent le résultat voulu dans le txt. Pour les 2 premiers, j'ai le même message qu'hier. Pour le dernier, j'ai un txt vide. Pour rappel, dans les deux premiers codes, si j'enleve le " | Select-Object [...] .txt", la console me renvoie les bonnes informations, à savoir les groupes dont l'utilisateur est membre.
Merci d'avance à ceux qui pourront m'éclairer sur mon problème
Pendant un instant j'ai eu peur car les modifs que j'avais effectué hier ne semblaient plus fonctionner... Bon il se trouve que maintenant je dois lancer tous mes scripts en mode administrateur sinon ils ne fonctionnent pas... Je ne comprends pas pourquoi... Sachant que le même script en mode administrateur fonctionne parfaitement. Bref... Passons.
Voici les différents codes que j'ai essayé :
$ugrp = get-aduser $user -Properties *
$ugrp.memberof | Select-Object memberof | Export-csv ugrp.txt -Encoding UTF8
start notepad.exe ugrp.txt
ou
$ugrp = get-aduser $user -Properties *
$ugrp.memberof | Select-Object memberof > C:\Scripts\LOGS\ugrp.txt
start notepad.exe ugrp.txt
ou même
foreach($u in $user) {
$name = $u.name
$membre = $u.memberof
Add-Content -path "ugrp.txt" -value $name
Add-Content -path "ugrp.txt" -value $name
start notepad.exe ugrp.txt
Aucun de ces codes ne m'affichent le résultat voulu dans le txt. Pour les 2 premiers, j'ai le même message qu'hier. Pour le dernier, j'ai un txt vide. Pour rappel, dans les deux premiers codes, si j'enleve le " | Select-Object [...] .txt", la console me renvoie les bonnes informations, à savoir les groupes dont l'utilisateur est membre.
Merci d'avance à ceux qui pourront m'éclairer sur mon problème
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 187
- Remerciements reçus 37
il y a 2 ans 6 mois #31434
par ericlm128
Réponse de ericlm128 sur le sujet Comment obtenir les groupes dont un utilisateur est membre
J'ai fait un test, memberof est de type ADPropertyValueCollection avec ce mot clé tu trouveras de la littérature sur le net.
Il faut donc convertir ce tableau en chaine de caractère.
Voici un exemple fonctionnel :
Il faut donc convertir ce tableau en chaine de caractère.
Voici un exemple fonctionnel :
Get-ADUser $user -Properties memberof | Select-Object cn, @{N="memberof";E={$_.memberof -join ";"}} | Export-csv ugrp.txt -Encoding UTF8 -NoTypeInformation
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- Comment obtenir les groupes dont un utilisateur est membre
Temps de génération de la page : 0.079 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Comment obtenir les groupes dont un utilisateur est membre