Question
Boucles ...
- axel
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 16 ans 11 mois #280
par axel
Boucles ... a été créé par axel
Salut tout le monde
J'ai lu sur le site de microsoft qu'il n'y a plus sous powershell les boucles \"while, for etc...\" et qu'elles ont ete remplacees par foreach.
OK mais comment fait on pour imbriquer plusieurs instructions dans une boucle ?
Prenons l'ex d'une situation concrete :
je recupere dans l'ad la liste de mes users.
Je souhaite classer dans une feuille excel le resultat.
En colonne 1, je mettrai le login et en colonne 2, la date de creation
L'idee est donc (c'est grossierement ecrit pr aller plus vite) :
i=1
Foreach element
cells(i,1)= element.login
cells(i,2)= element.date crea
i=i+1
Comment traduire ca en powershell
Merci d'avance pour votre aide
J'ai lu sur le site de microsoft qu'il n'y a plus sous powershell les boucles \"while, for etc...\" et qu'elles ont ete remplacees par foreach.
OK mais comment fait on pour imbriquer plusieurs instructions dans une boucle ?
Prenons l'ex d'une situation concrete :
je recupere dans l'ad la liste de mes users.
Je souhaite classer dans une feuille excel le resultat.
En colonne 1, je mettrai le login et en colonne 2, la date de creation
L'idee est donc (c'est grossierement ecrit pr aller plus vite) :
i=1
Foreach element
cells(i,1)= element.login
cells(i,2)= element.date crea
i=i+1
Comment traduire ca en powershell
Merci d'avance pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 16 ans 11 mois #281
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Boucles ...
Salut
les boucles existent toujours, consulte les fichiers about_xxx dans le répertoire de PowerShell pour plus d'informations à leurs sujet.
[code:1]for ($i = 0; $i -ile 20; $i += 2) {Write-Host $i}[/code:1]
Tu peux ajouter plusieurs instructions dans le scriptblock, i.e{Write-Host $i}, en les séparant par des point-virgules.
Pour ton cas il est peut être préférable de créer une fichier csv puis de l'ouvir avec Excel.
Regarde la commande Select-Object et Export-Csv.
Consulte l'aide en ligne par
[code:1]
help NomCommandLet -detail
[/code:1]
les boucles existent toujours, consulte les fichiers about_xxx dans le répertoire de PowerShell pour plus d'informations à leurs sujet.
[code:1]for ($i = 0; $i -ile 20; $i += 2) {Write-Host $i}[/code:1]
Tu peux ajouter plusieurs instructions dans le scriptblock, i.e{Write-Host $i}, en les séparant par des point-virgules.
Pour ton cas il est peut être préférable de créer une fichier csv puis de l'ouvir avec Excel.
Regarde la commande Select-Object et Export-Csv.
Consulte l'aide en ligne par
[code:1]
help NomCommandLet -detail
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- axel
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 16 ans 11 mois #282
par axel
Réponse de axel sur le sujet Re:Boucles ...
Merci batchman pour ces infos et conseils.
Je sais que je pourrais enregistrer mes infos directement dans un csv ou autre mais je voulais compliquer le truc et du coup apprendre un peu plus vite
Je te tiens au courant des que j'ai trouve mon code.
@++
Je sais que je pourrais enregistrer mes infos directement dans un csv ou autre mais je voulais compliquer le truc et du coup apprendre un peu plus vite
Je te tiens au courant des que j'ai trouve mon code.
@++
Connexion ou Créer un compte pour participer à la conversation.
- axel
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 16 ans 11 mois #283
par axel
Réponse de axel sur le sujet Re:Boucles ...
Il y a un hic !!
Lorsque j'essaye l'export-csv, mon fichier affiche les lignes suivantes :
ClassId2e4f51ef21dd47e99d3c952918aff9cd,pageHeaderEntry,pageFooterEntry,autosizeInfo,shapeInfo,groupingEntry
033ecb2bc07a4d43b5ef94ed5a35d280,,,,Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo,
9e210fe47d09416682b841769c78b8a3,,,,,
27c87ef9bbda4f709f6b4002fa4af63c,,,,,
27c87ef9bbda4f709f6b4002fa4af63c,,,,,
4ec4f0187cb04f4cb6973460dfe252df,,,,,
cf522b78d86c486691226b40aa69e95c,,,,,]
Mon code est :
PS S:\> foreach ($i in $liste) {$i.properties.login,$i.Properties.whencreated,$i.Path |format-table |export-csv -path d:
\ax.csv -noTypeInformation}
Lorsque j'utilise le select-object, c'est presque pire :
+ foreach ($i in $liste) {select-object <<<< -property $i.properties.samaccountname}
Select-Object : Impossible de convertir System.DirectoryServices.ResultPropertyValueCollection en l'un des types suivan
ts {System.String, System.Management.Automation.ScriptBlock}.
Au niveau de ligne : 1 Caractère : 38
Et la mon code est :
PS S:\> foreach ($i in $liste) {select-object -property $i.properties.samaccountname}
Je ne comprends pas vraiment le pb. J'imagine qu'il y a un pb dans l'interpretation des resultats
Ce qui me tue le plus est que si je veux faire une simple sortie via out-file, je n'ai aucune erreur mais le fichier est vide !!!!!
please helppppppp
Lorsque j'essaye l'export-csv, mon fichier affiche les lignes suivantes :
ClassId2e4f51ef21dd47e99d3c952918aff9cd,pageHeaderEntry,pageFooterEntry,autosizeInfo,shapeInfo,groupingEntry
033ecb2bc07a4d43b5ef94ed5a35d280,,,,Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo,
9e210fe47d09416682b841769c78b8a3,,,,,
27c87ef9bbda4f709f6b4002fa4af63c,,,,,
27c87ef9bbda4f709f6b4002fa4af63c,,,,,
4ec4f0187cb04f4cb6973460dfe252df,,,,,
cf522b78d86c486691226b40aa69e95c,,,,,]
Mon code est :
PS S:\> foreach ($i in $liste) {$i.properties.login,$i.Properties.whencreated,$i.Path |format-table |export-csv -path d:
\ax.csv -noTypeInformation}
Lorsque j'utilise le select-object, c'est presque pire :
+ foreach ($i in $liste) {select-object <<<< -property $i.properties.samaccountname}
Select-Object : Impossible de convertir System.DirectoryServices.ResultPropertyValueCollection en l'un des types suivan
ts {System.String, System.Management.Automation.ScriptBlock}.
Au niveau de ligne : 1 Caractère : 38
Et la mon code est :
PS S:\> foreach ($i in $liste) {select-object -property $i.properties.samaccountname}
Je ne comprends pas vraiment le pb. J'imagine qu'il y a un pb dans l'interpretation des resultats
Ce qui me tue le plus est que si je veux faire une simple sortie via out-file, je n'ai aucune erreur mais le fichier est vide !!!!!
please helppppppp
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 16 ans 11 mois #284
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Boucles ...
aqwel écrit:
Comme je n'ai pas d'AD sous la main, ça vas pas être facile
Pour le msg d'erreur il est assez explicite, PS ne sait comment manipuler l'information que tu récupéres. Une propriété peut être de type objet vérifie avec get-member.
D'aprés MSDN tu manipules une collection, il te faut donc, à prioris, un second niveau d'itération.
Essaie déjà de récupérer cette info sans la mettre en forme.
Il est préférable de citer le code qui a provoqué cette erreur.Lorsque j'utilise le select-object, c'est presque pire :
Comme je n'ai pas d'AD sous la main, ça vas pas être facile
Pour le msg d'erreur il est assez explicite, PS ne sait comment manipuler l'information que tu récupéres. Une propriété peut être de type objet vérifie avec get-member.
D'aprés MSDN tu manipules une collection, il te faut donc, à prioris, un second niveau d'itération.
Essaie déjà de récupérer cette info sans la mettre en forme.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 16 ans 11 mois #285
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Boucles ...
Salut Aqwel
J'ai fait un petit script qui j'espère ressemble à ce que tu attends. Il te suffira de modifier la requête LDAP pour te connecter au groupe de ton choix :
[code:1]
$groupe = ([ADSI]\"LDAP://localhost/cn=mongroupe,ou=test,dc=powershell-scripting,dc=com\"«»)
$xls = New-Object -comobject Excel.Application
$xls.Visible = $True
$class = $xls.Workbooks.Add()
$c = $class.Worksheets.Item(1)
$col=1
foreach ($membre in $groupe.member) {
$ligne=1
$user = ([ADSI]\"LDAP://localhost/$membre\"«»)
$c.Cells.Item($col,$ligne) = [string]$user.samaccountname
$ligne++
$c.Cells.Item($col,$ligne) = [string]$user.displayname
$ligne++
$c.Cells.Item($col,$ligne) = [string]$user.whencreated
$col++
}
[/code:1]
Sinon pour ce qui concerne les boucles, toutes les formes sont bien présentes dans PowerShell. Es-tu sur de ta source ?
Arnaud
J'ai fait un petit script qui j'espère ressemble à ce que tu attends. Il te suffira de modifier la requête LDAP pour te connecter au groupe de ton choix :
[code:1]
$groupe = ([ADSI]\"LDAP://localhost/cn=mongroupe,ou=test,dc=powershell-scripting,dc=com\"«»)
$xls = New-Object -comobject Excel.Application
$xls.Visible = $True
$class = $xls.Workbooks.Add()
$c = $class.Worksheets.Item(1)
$col=1
foreach ($membre in $groupe.member) {
$ligne=1
$user = ([ADSI]\"LDAP://localhost/$membre\"«»)
$c.Cells.Item($col,$ligne) = [string]$user.samaccountname
$ligne++
$c.Cells.Item($col,$ligne) = [string]$user.displayname
$ligne++
$c.Cells.Item($col,$ligne) = [string]$user.whencreated
$col++
}
[/code:1]
Sinon pour ce qui concerne les boucles, toutes les formes sont bien présentes dans PowerShell. Es-tu sur de ta source ?
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.081 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Boucles ...