Question Foreach et Export-Csv incompatible

Plus d'informations
il y a 9 ans 9 mois #21901 par oborgeaud@gmail.com
Bonjour à tous !

Si fière de mon script PS qui fonctionne parfaitement, j'ai voulu lui ajouter une instruction pour enregistrer le résultat dans un fichier, et paf, ne fonctionne pas.

Ce que je fais ici, c'est lister des groupes de sécurité, et ensuite les machines s'y trouvant.

Import-Module ActiveDirectory
$Groups = Get-ADGroup -Filter '*' | select-object * | where-object {$_.distinguishedname -like \"*,OU=Software,OU=Engineering,OU=Global,OU=ADMCV,DC=adacv,DC=ad,DC=etat-libre-geneve,DC=ch\"}
Foreach($G In $Groups)
{
Write-Host $G.Name
$Members = Get-ADGroupMember $G.Name -Recursive
Write-Host $Members.count
$G.Members
}


Le résultat est pleinement dans mes espérances:

SFT_Microsoft_Visio_2010_Std
844
SFT_Microsoft_Project_2010_Pro
14
SFT_Microsoft_OneNote_2010
89
SFT_Microsoft_Access_2010
824
SFT_Microsoft_Outlook_2010
3
SFT_Microsoft_Publisher_2010
17


Mais lorsque je rajoute

Import-Module ActiveDirectory
$Groups = Get-ADGroup -Filter '*' | select-object * | where-object {$_.distinguishedname -like \"*,OU=Software,OU=Engineering,OU=Global,OU=ADMCV,DC=adacv,DC=ad,DC=etat-libre-geneve,DC=ch\"}
Foreach($G In $Groups)
{
Write-Host $G.Name
$Members = Get-ADGroupMember $G.Name -Recursive
Write-Host $Members.count
$G.Members
} | Export-Csv \"C:\temp\SFT_Report.csv\" -NoTypeInformation

J'ai l'erreur

[b]PS C:\Users\v7h2ni> C:\Users\v7h2ni\Documents\Sans titre3.ps1
Au caractère C:\Users\v7h2ni\Documents\Sans titre3.ps1:9 : 3
+ } | Export-Csv \"C:\temp\SFT_Report.csv\" -NoTypeInformation
+ ~
Un élément de canal vide n’est pas autorisé.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : EmptyPipeElement


[/b]

Naturellement, j'ai essayé pas mal de choses, mais sans solution. Si quelqu'un a une idée, c'est volontier.

Salutations,

Olivier



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

Plus d'informations
il y a 9 ans 9 mois #21908 par Philippe
salut oborgeaud et bienvenue

peut tu aussi nous aider en mettant les balises code sur les parties scripts de ton message, stp.
Ca nous facilite le travail de lecture de ton code !
pour ça tu surligne ton code et tu clique sur le bouton code au dessus de la zone de saisi du texte
->tu as la possibilité d’éditer (modifier) ton premier post
merci

après tu peut remplacé les write-host par des Write-output dans ta boucle et le rajouter devant $G.Members
ça devrait le faire

PS : grosse correction, ma réponse ne fonctionne pas pour deux raisons :
- tu doit utilisé l'autre écriture de foreach pour utilisé le pipeline soit :
[code:1]$Groups | Foreach {
Write-output $_.Name
$name = $_
$Members = Get-ADGroupMember $Name -Recursive
Write-output $Members.count
Write-output $Members
} | Export-Csv \"C:\temp\SFT_Report.csv\" -NoTypeInformation[/code:1]
- deuxième problème, le résultat renvoyé n'est pas un tableau donc erreur mais dans le contenue du fichier !!!

il faut plus d'info pour une aide sur dernier point !<br><br>Message édité par: 6ratgus, à: 7/06/16 17:44

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

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