Question [RESOLU] Récupérer Name, SamAccountName, MemberOf

Plus d'informations
il y a 10 ans 2 mois #21323 par Calvino
Bonjour à tous,

Me voilà de retour pour un autre script ayant pour but de lister:

-soit la liste de tous les groupes avec les utilisateurs qui sont membres

-soit la liste de tous les utilisateurs avec les groupes dont ils sont membres

J'ai commencer la solution numéro 2 avec la commande

[code:1]Get-ADUser -SearchBase \"OU=HPPS,DC=HPPS,DC=FR\" -Filter * -Properties Name,SamAccountName,MemberOf | select Name,SamAccountName,MemberOf | Export-Csv \"C:\test.csv\"[/code:1]

Le problème c'est que dans mon .csv j'obtient

[code:1]\"Name\",\"SamAccountName\",\"MemberOf\"
\"f.bana\",\"fbana.psv\",\"Microsoft.ActiveDirectory.Management.ADPropertyValueCollection\"
\"b.dupont\",\"b.dupont.psv\",\"Microsoft.ActiveDirectory.Management.ADPropertyValueCollection\"
\"m.jaco\",\"m.jaco\",\"Microsoft.ActiveDirectory.Management.ADPropertyValueCollection\"[/code:1]

Je pense connaitre le problème mais pas la solution !
MemberOf retourne des valeur multiples et un fichier CSV ne le gère pas.

Je dois fait ce script pour l'entreprise dans laquelle je suis en stage (comme mon précédent post) et je viens d'apprendre que je dois le rendre dans 2 jours :pinch:

J'espère avoir bien expliquer mon problème :)

Merci par avance de vos réponses<br><br>Message édité par: NounoursAlpha, à: 27/01/16 12:00

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

Plus d'informations
il y a 10 ans 2 mois #21328 par Philippe
salut NounoursAlpha

MemberOf retourne des valeur multiples et un fichier CSV ne le gère pas.

exact !

cadeau :
[code:1]
# \&quot;*\&quot; = tous les utilisateurs de l'OU ou de l'AD
# \&quot;test*\&quot; = tous les utilisateurs qui commence par test
# \&quot;test\&quot; = que l'utilisateur test
$utilisateur = \&quot;*\&quot;
$ou = \&quot;OU=HPPS,DC=HPPS,DC=FR\&quot;

$resultat = Get-ADuser -Filter {name -like $utilisateur} -Searchbase $ou -properties enabled, MemberOf | where {$_.enabled -eq $true} | foreach {
$user = $_.name
$SamAccountName = $_.SamAccountName
$_.MemberOf | select @{n=\&quot;Name\&quot;;e={$($user)}}, @{n=\&quot;SamAccountName\&quot;;e={$($SamAccountName)}}, @{n=\&quot;groupe\&quot;;e={($_ -split \&quot;CN=([\w- \(\)\!\'\.]+)[, ]+OU=\&quot;«»)[1]}}
}

$resultat | ft -a
[/code:1]
j'avais déjà fais la même chose pour ma boite
il y a en plus :
- un filtre pour avoir que les utilisateurs actifs
- un split sur le memberof qui est au format \&quot;DistinguishedName\&quot; dans l'AD

ATTENTION : ça ne liste pas les utilisateurs sans groupes



pour l'autre liste regarde \&quot;Get-ADGroupMember\&quot; avec l'option \&quot;-Recursive\&quot;
après tout dépend de la liste que tu cherche :
- avec les sous groupes
- sans les sous groupes

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

Plus d'informations
il y a 10 ans 2 mois #21329 par Laurent Dardenne
Salut,
NounoursAlpha écrit:

MemberOf retourne des valeur multiples et un fichier CSV ne le gère pas.

Le CSV les gére, il faut utiliser une chaine ou construire une propriété calculée, consulte l'aide en ligne du cmdlet Select-Object :
[code:1]
$o=get-process Powershell
$o|select name,Modules|export-csv c:\temp\t.csv
type c:\temp\t.csv
# #TYPE Selected.System.Diagnostics.Process
# \&quot;Name\&quot;,\&quot;Modules\&quot;
# \&quot;powershell\&quot;,\&quot;System.Diagnostics.ProcessModuleCollection\&quot;

$OldOFS,$OFS=$Ofs,','
$ofs=',';$o|select name,@{n='Modules';e={\&quot;$($_.Modules.ModuleName)\&quot;}}|export-csv c:\temp\t.csv
type c:\temp\t.csv
# #TYPE Selected.System.Diagnostics.Process
# \&quot;Name\&quot;,\&quot;Modules\&quot;
# \&quot;powershell\&quot;,\&quot;powershell.exe,ntdll.dll,kernel32.dll,KERNELBASE.dll,ADVAPI32.dll,...
$OFS=$OldOFS
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 20/01/16 13:25

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 2 mois #21343 par Calvino
Merci pour vos réponses

6ratgus, c'est exactement ce que je voulais mais si je le fait ressortir dans un csv aucune valeur ne ressort correctement.

J'ai pas compris ce que fait [code:1]$resultat | ft -a[/code:1]

J'ai besoin de le faire sortir dans un CSV car le service informatique doit présenter ces données dans un fichier lisible sur excel et faire le tri si nécessaire.

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

Plus d'informations
il y a 10 ans 2 mois #21344 par Philippe

c'est exactement ce que je voulais mais si je le fait ressortir dans un csv aucune valeur ne ressort correctement.

peut tu me montrer comment tu fais ton export car pour moi j'ai pas de problème pour relire le fichier sous Excel

J'ai pas compris ce que fait
[code:1] $resultat | ft -a[/code:1]

désolé j'évite les alias dans les forum d'habitude mais la j'ai oublié
FT n'est pas France Telecom mais Format-Table
c'est un alias que tu peux retrouvé comme ça :
[code:1]get-alias ft
CommandType Name ModuleName
----
Alias ft -&gt; Format-Table [/code:1]
DESCRIPTION
L'applet de commande Format-Table met en forme la sortie d'une commande sous forme de tableau présentant les propriétés sélectionnées de l'objet dans chaque colonne. Le type d'objet détermine la disposition par défaut et les propriétés qui sont affichées dans chaque colonne, mais vous pouvez utiliser le paramètre Property pour sélectionner les propriétés que vous souhaitez voir.

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

Plus d'informations
il y a 10 ans 2 mois #21345 par Calvino
Je viens de me rendre compte que j'avait mis l'export au niveau de [code:1]$resultat | ft -a | Export-csv \&quot;c:\test.csv\&quot;[/code:1]

Sans export avec
[code:1]$_.MemberOf | select @{n=\&quot;Name\&quot;;e={$($user)}}, @{n=\&quot;SamAccountName\&quot;;e={$($SamAccountName)}}, @{n=\&quot;groupe\&quot;;e={($_ -split \&quot;CN=([\w- \(\)\!\'\.]+)[, ]+OU=\&quot;«»)[1]}} [/code:1]

J'obtient:
[code:1]Name SamAccountName groupe
----

f.bana fbana.psv Informatique.psv
b.dupont b.dupont.psv Informatique.psv
m.jaco m.jaco Informatique.psv
m.jaco m.jaco Administration.psv

[/code:1]

Mais si je met un export
[code:1]$_.MemberOf | select @{n=\&quot;Name\&quot;;e={$($user)}}, @{n=\&quot;SamAccountName\&quot;;e={$($SamAccountName)}}, @{n=\&quot;groupe\&quot;;e={($_ -split \&quot;CN=([\w- \(\)\!\'\.]+)[, ]+OU=\&quot;«»)[1]}} | export-csv \&quot;c:\test.csv\&quot; -notype -encoding utf8[/code:1]

Il me manque f.bana et b.dupont
[code:1]\&quot;Name\&quot;,\&quot;SamAccountName\&quot;,\&quot;groupe\&quot;
\&quot;m.jaco\&quot;,\&quot;m.jaco\&quot;,\&quot;Informatique.psv\&quot;
\&quot;m.jaco\&quot;,\&quot;m.jaco\&quot;,\&quot;Administration.psv\&quot;[/code:1]

Je suppose que j'ai mal placer l'export ? A cause de la boucle il efface les anciennes données ?

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

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