Question Boucles ...

Plus d'informations
il y a 16 ans 11 mois #280 par axel
Boucles ... a été créé par axel
Salut tout le monde B)

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.

Plus d'informations
il y a 16 ans 11 mois #281 par Laurent Dardenne
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]

Tutoriels PowerShell

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

Plus d'informations
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.

@++

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

Plus d'informations
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

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

Plus d'informations
il y a 16 ans 11 mois #284 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Boucles ...
aqwel écrit:

Lorsque j'utilise le select-object, c'est presque pire :

Il est préférable de citer le code qui a provoqué cette erreur.
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.

Plus d'informations
il y a 16 ans 11 mois #285 par Arnaud Petitjean
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 ? :huh:

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
Propulsé par Kunena