Question
[Résolu] Récupérer une variable dans un Foreach
- Virtual76
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 9 ans 8 mois #22041
par Virtual76
[Résolu] Récupérer une variable dans un Foreach a été créé par Virtual76
Bonjour,
J'aimerai savoir comment il est possible de sortir une variable d'un Foreach?
Je m'explique j'ai une boucle Foreach qui permet de faire l'installation d'un logiciel et qui contient une variable $Installation, cette variable contient un code sur le déroulement de l'installation du logiciel (yes, no..) je voudrais récupérer ce code donc la valeur de la variable en dehors de mon Foreach pour faire un log des installations
Malheureusement je n'arrive pas à récupérer ma variable après la fin du Foreach.
Comment puis-je faire pour régler ce problème et récupérer la valeur dans ma variable?
Merci<br><br>Message édité par: Arnaud, à: 31/08/16 15:52
J'aimerai savoir comment il est possible de sortir une variable d'un Foreach?
Je m'explique j'ai une boucle Foreach qui permet de faire l'installation d'un logiciel et qui contient une variable $Installation, cette variable contient un code sur le déroulement de l'installation du logiciel (yes, no..) je voudrais récupérer ce code donc la valeur de la variable en dehors de mon Foreach pour faire un log des installations
Malheureusement je n'arrive pas à récupérer ma variable après la fin du Foreach.
Comment puis-je faire pour régler ce problème et récupérer la valeur dans ma variable?
Merci<br><br>Message édité par: Arnaud, à: 31/08/16 15:52
Connexion ou Créer un compte pour participer à la conversation.
- Virtual76
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 9 ans 8 mois #22049
par Virtual76
Réponse de Virtual76 sur le sujet Re:Récupérer une variable dans un Foreach
J'ai essayé de plusieurs manière notamment :
[code:1]
Invoke-command { mon script.... $installation = \"yes\" } -OutVariable $installation
[/code:1]
Mais cela ne fonctionne pas, la variable $installation reste désespérément vide en dehors du invoke
[code:1]
Invoke-command { mon script.... $installation = \"yes\" } -OutVariable $installation
[/code:1]
Mais cela ne fonctionne pas, la variable $installation reste désespérément vide en dehors du invoke
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 8 mois #22050
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récupérer une variable dans un Foreach
Salut,
quelle version de PS utilises-tu ?
Ceci fonctionne dans une console avec la v2 et la v4:
[code:1]
get-variable installation
#erreur
foreach ($i in 1..5) { $installation=$i}
get-variable installation
#5
[/code:1]
mais pas ceci :
[code:1]
rv installation
# nouvelle portée
&{foreach ($i in 1..5) { $installation=$i}}
get-variable installation
[/code:1]
Sans ton code sous les yeux, ce n'est pas facile de t'aider...
quelle version de PS utilises-tu ?
Ceci fonctionne dans une console avec la v2 et la v4:
[code:1]
get-variable installation
#erreur
foreach ($i in 1..5) { $installation=$i}
get-variable installation
#5
[/code:1]
mais pas ceci :
[code:1]
rv installation
# nouvelle portée
&{foreach ($i in 1..5) { $installation=$i}}
get-variable installation
[/code:1]
Sans ton code sous les yeux, ce n'est pas facile de t'aider...
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Virtual76
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 9 ans 8 mois #22051
par Virtual76
Réponse de Virtual76 sur le sujet Re:Récupérer une variable dans un Foreach
Merci de ta réponse Laurent
Je suis en Powershell V5.
Mon code n'est en soit pas bien compliqué:
Dans un premier temps je m’identifie sur une machine pour pouvoir lui envoyer du code avec un Invoke.
J'ai un ensemble de fonction qui s’exécute, notamment une pour déterminer l'état de l'installation et qui renvoi une variable $installation avec plusieurs valeurs possibles en fonction du déroulement de l'installation.
[code:1]
Invoke-command { mon script.... $installation = \"yes\" } -Credentials $Creds -OutVariable $installation
[/code:1]
Ensuite, après mon Invoke j'ai un \"if\" qui permet selon le code de retour d'écrire dans un fichier txt
[code:1]
if ($Installation -like \"yes\"«»)
...
elseif ($Installation -like \"no\"«»)
...
else
... ETAT DE L'INSTALLATION INDETERMINE
[/code:1]
Vu que je n'ai aucune valeur qui sort pour ma variable $Installation, j'ai tout le temps marqué dans mon fichier de log que l'état de l'installation est indéterminé (le else)
Je voudrais juste que la valeur de la variable installation sorte du Invoke pour pouvoir appliquer correctement le if ensuite.
J'ai essayé le
[code:1]
Get-Variable Installation
[/code:1]
mais cela ne fonctionne pas
Je suis en Powershell V5.
Mon code n'est en soit pas bien compliqué:
Dans un premier temps je m’identifie sur une machine pour pouvoir lui envoyer du code avec un Invoke.
J'ai un ensemble de fonction qui s’exécute, notamment une pour déterminer l'état de l'installation et qui renvoi une variable $installation avec plusieurs valeurs possibles en fonction du déroulement de l'installation.
[code:1]
Invoke-command { mon script.... $installation = \"yes\" } -Credentials $Creds -OutVariable $installation
[/code:1]
Ensuite, après mon Invoke j'ai un \"if\" qui permet selon le code de retour d'écrire dans un fichier txt
[code:1]
if ($Installation -like \"yes\"«»)
...
elseif ($Installation -like \"no\"«»)
...
else
... ETAT DE L'INSTALLATION INDETERMINE
[/code:1]
Vu que je n'ai aucune valeur qui sort pour ma variable $Installation, j'ai tout le temps marqué dans mon fichier de log que l'état de l'installation est indéterminé (le else)
Je voudrais juste que la valeur de la variable installation sorte du Invoke pour pouvoir appliquer correctement le if ensuite.
J'ai essayé le
[code:1]
Get-Variable Installation
[/code:1]
mais cela ne fonctionne pas
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 8 mois #22052
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récupérer une variable dans un Foreach
Là c'est plus parlant 
Premier soucis, la substitution :
[code:1]
$Installation=\"MonNom\"
Invoke-command { write-output \"yes\" } -OutVariable $installation
#Yes
$Installation
#MonNom
$MonNom
#Yes
Invoke-command { write-output \"yes\" } -OutVariable Installation
[/code:1]
Le second étant d'émettre une valeur dans le pipeline.
Tu peux aussi simplifier et émettre une seule fois la valeur :
[code:1]
rv Installation
$isInstallationReussie=Invoke-command { write-output \"yes\" }
#Yes
$isInstallationReussie=Invoke-command { $result=\"yes\"; $result -eq \"yes\" }
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 7/07/16 17:16
Premier soucis, la substitution :
[code:1]
$Installation=\"MonNom\"
Invoke-command { write-output \"yes\" } -OutVariable $installation
#Yes
$Installation
#MonNom
$MonNom
#Yes
Invoke-command { write-output \"yes\" } -OutVariable Installation
[/code:1]
Le second étant d'émettre une valeur dans le pipeline.
Tu peux aussi simplifier et émettre une seule fois la valeur :
[code:1]
rv Installation
$isInstallationReussie=Invoke-command { write-output \"yes\" }
#Yes
$isInstallationReussie=Invoke-command { $result=\"yes\"; $result -eq \"yes\" }
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 7/07/16 17:16
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Virtual76
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 12
- Remerciements reçus 0
il y a 9 ans 8 mois #22059
par Virtual76
Réponse de Virtual76 sur le sujet Re:Récupérer une variable dans un Foreach
Merci pour ta réponse Laurent,
J'ai du mal à comprendre comment la mettre en place.
Avant le invoke je déclare la variable installation
Ensuite je place un write-out \"yes\" et un -outvariable installation?
Voici ce que j'ai écris:
[code:1]
$installation=\"ind\" #indéterminé
Invoke-Command -ScriptBlock
{
#...
#mon script de 400 lignes
#test de l'installation
if ($installationdulogiciel -like \"ok\"«»)
{
write-output \"yes\"
}
#...
} -OutVariable $installation #fin du invoke
if ($installation -like \"yes\"«»)
{
#...écrire dans un fichier
}
[/code:1]
J'ai du mal à comprendre comment la mettre en place.
Avant le invoke je déclare la variable installation
Ensuite je place un write-out \"yes\" et un -outvariable installation?
Voici ce que j'ai écris:
[code:1]
$installation=\"ind\" #indéterminé
Invoke-Command -ScriptBlock
{
#...
#mon script de 400 lignes
#test de l'installation
if ($installationdulogiciel -like \"ok\"«»)
{
write-output \"yes\"
}
#...
} -OutVariable $installation #fin du invoke
if ($installation -like \"yes\"«»)
{
#...écrire dans un fichier
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Récupérer une variable dans un Foreach