Question Tableau - Récupérer valeur

Plus d'informations
il y a 10 ans 1 mois #21424 par bob kent
Bonjour,

J'ai un petit problème pour récupérer toutes mes données contenu dans une requêtes powershell.
J'ai une requête qui permet de récupérer des info d'une GPO concernant des imprimantes.
Je veux donc un tableau excel en sorti avec une colonne nom de la gpo et une autre avec les imprimantes en fonction du nom de la gpo.

Sa marche presque bien, le problème se situe pour récupérer les imprimantes, les data sont bien la et dispo mais j'arrive pas à les stocké dans mon tableau et les exporté correctement.

lorsque j'exécute mon script en sortie (sans export csv, affichage sur la console powershell) j'ai le nom de mes imprimantes entouré de {imprimante1, imprimante2,...}
avec export j'ai dans la colonne des imprimantes => System.Object[]

[code:1]#Création d'un tableau
$tableau =@()

#Relevé de la configuration des GPO
$gpo = Get-CtxGroupPolicyConfiguration com* -ConfiguredOnly

foreach ($gpocitrix in $gpo){
$Object = new-object PSObject

#récupère le nom de la gpo
$GpoName = $gpocitrix.policyname
#récupère les SessionPrinters
$SPR = $gpocitrix.sessionprinters | select-object values
foreach ($SPV in $SPR){
$SPResult = $SPV.values
#echo $SPV.values

}
$Object | add-member -name \"PolicyName\" -membertype Noteproperty -value $GpoName
$Object | add-member -name \"sessionprinters\" -membertype Noteproperty -value $SPResult
$tableau += $Object
}
echo $tableau[/code:1]

Ce qui est agacant c'est que mon \"#echo $SPV.values\" fonctionne et me retourne mes info mais je n'arrive pas à faire passer ce résultat dans mon tableau !

merci de votre aide

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

Plus d'informations
il y a 10 ans 1 mois #21429 par Philippe
Réponse de Philippe sur le sujet Re:Tableau - Récupérer valeur
bonjour Cartoon17

avec export j'ai dans la colonne des imprimantes => System.Object[]

c'est un courant dans les exports !

dans ce sujet tu à deux solutions donné par Laurent et moi dans les deux premières réponses.
choisi celle que tu préfère ou que tu comprend ! ;)

si tu n'arrive pas à adapté ton script reviens on le fera ensemble

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

Plus d'informations
il y a 10 ans 1 mois #21434 par bob kent
Réponse de bob kent sur le sujet Re:Tableau - Récupérer valeur
B) cool sa fonctionne.

Au fait lorsque l'on a plusieurs data dans une variable il faut \"construire\" un tableau

[code:1]
$resultat = Get-CtxGroupPolicyConfiguration com* -ConfiguredOnly | foreach {
#récupère le nom de la gpo
$GpoName = $_.policyname

#récupère les SessionPrinters
$_.sessionprinters | select @{n=\"GPOName\";e={$($GpoName)}}, @{n=\"SessionPrinters\";e={($_.values)}}

}
$resultat | export-csv c:\temp\GPO_conf.csv [/code:1]

Par contre petite question bonus, je souhaite également récupérer la valeur \"DefaultPrinter\". J'ai le résultat dans mon CSV mais il est entouré de @{Value= } dans ma colonne DefaultPrinter.


[code:1]
$resultat = Get-CtxGroupPolicyConfiguration com* -ConfiguredOnly | foreach {
#récupère le nom de la gpo
$GpoName = $_.policyname
$GpoType = $_.type
$DefaultPrinter = $_.DefaultClientPrinter | select-object value
#récupère les SessionPrinters
$_.sessionprinters | select @{n=\"GPOName\";e={$($GpoName)}}, @{n=\"GPOType\";e={$($GpoType)}}, @{n=\"DefaultPrinter\";e={$($DefaultPrinter)}}, @{n=\"SessionPrinters\";e={($_.values)}}

}
$resultat | export-csv c:\temp\GPO_conf.csv [/code:1]

Pour info voici à quoi ressemble le résultat d'un Get-CtxGroupPolicyConfiguration


PolicyName : Nom de la GPO
Type : User
DefaultClientPrinter : @{State=Enabled; Value=\\Mon Imprimante; Path=ICA\Printing\DefaultClientPrinter}
SessionPrinters : @{State=Enabled; Values=System.Object[]; Path=ICA\Printing\SessionPrinters}
ClientPrinterAutoCreation : @{State=Enabled; Value=DoNotAutoCreate; Path=ICA\Printing\ClientPrinters\ClientPrinterAutoCreation}<br><br>Message édité par: Cartoon17, à: 28/01/16 10:23

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

Plus d'informations
il y a 10 ans 1 mois #21435 par Laurent Dardenne
Salut,
Cartoon17 écrit:

Par contre petite question bonus, je souhaite également récupérer la valeur \&quot;DefaultPrinter\&quot;. J'ai le résultat dans mon CSV mais il est entouré de @{Value= } dans ma colonne DefaultPrinter.

Select-Object renvoi un nouvel objet de type PSObject qui est transformé de cette manière :
[code:1]
$o=\&quot;$(\&quot;s2\&quot;|select length)\&quot;
$o.ToString()
# @{Length=2}
[/code:1]

Il faut construire un objet personnalisé afin d'avoir toutes les infos.

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 1 mois #21437 par bob kent
Réponse de bob kent sur le sujet Re:Tableau - Récupérer valeur
je suis pas sur d'avoir compris:blink: .

j'ai fais un $DefaultPrinter.ToString() et la valeur ne s'affiche pas.

Si il faut faire un PSObject (comme mon idée de départ au fait ? mon 1er script) comment \&quot;mixer\&quot; mes résultats qui sont dans $resultat avec PSObject ?

Je ne peux pas me débarrasser directement des @{} pour avoir ma valeur dans $DefaultPrinter ?

Message édité par: Cartoon17, à: 28/01/16 14:39<br><br>Message édité par: Cartoon17, à: 28/01/16 14:40

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

Plus d'informations
il y a 10 ans 1 mois #21438 par bob kent
Réponse de bob kent sur le sujet Re:Tableau - Récupérer valeur
Je viens de trouver :P

C'est peut être un peu moche mais cela fonctionne

[code:1]
$resultat = Get-CtxGroupPolicyConfiguration com* -ConfiguredOnly | foreach {
#récupère le nom de la gpo
$GpoName = $_.policyname
$GpoType = $_.type
$DefaultPrinter = $_.DefaultClientPrinter
$DefaultPrinterResult = $DefaultPrinter.value
#récupère les SessionPrinters
$_.sessionprinters | select @{n=\&quot;GPOName\&quot;;e={$($GpoName)}}, @{n=\&quot;GPOType\&quot;;e={$($GpoType)}}, @{n=\&quot;DefaultPrinter\&quot;;e={$($DefaultPrinterResult)}}, @{n=\&quot;SessionPrinters\&quot;;e={($_.values)}}

}
$resultat | export-csv c:\temp\GPO_conf.csv [/code:1]

Je crois que la ligne avec $DefaultPrinterResult peut être sur la même que celle d'avant mais bon, sa marche.

merci encore du coup de main<br><br>Message édité par: Cartoon17, à: 28/01/16 15:19

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

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