Résolu Comment obtenir les groupes dont un utilisateur est membre

Plus d'informations
il y a 2 ans 6 mois - il y a 2 ans 6 mois #31428 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 {}
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.

Plus d'informations
il y a 2 ans 6 mois #31429 par ericlm128
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 :
(Get-ADUser userName –Properties MemberOf).MemberOf
 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 6 mois #31431 par R41L
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 :
$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.

Plus d'informations
il y a 2 ans 6 mois #31432 par ericlm128

Faut-il que je pipe en utilisant Select-Object avant de faire une redirection de la sortie ou bien un Export ? 

Tu peux essayer c'est tout de même étrange que ta première commande ne donne rien.
J'essaierai aujourd'hui si j'y pense

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 2 ans 6 mois #31433 par R41L
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é :
$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.

Plus d'informations
il y a 2 ans 6 mois #31434 par ericlm128
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 :
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.

Temps de génération de la page : 0.074 secondes
Propulsé par Kunena