Question
[Résolu] Récupérer une variable dans un Foreach
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 8 mois #22060
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récupérer une variable dans un Foreach
Virtual76 écrit:
La variable OutVariable est redondante si tu émets ton résultat dans le pipeline.
le code associé au cmdlet Invoke-command doit renvoyer ton résultat :
[code:1]
$isInstallationReussie=Invoke-command {
#ton traitement...
#test de l'installation
if ($installationdulogiciel -like \"ok\"«»)
{
write-output \"yes\" # Write-output précise l'intention
}
else
{ write-output \"No\" }
} #Invoke-command
[/code:1]
La variable $isInstallationReussie contient le résultat 'yes' ou 'No'.
Mais tu dois t'assurer que ton code renvoi une et une seule valeur.
Virtual76 écrit:
[code:1]
$isInstallationReussie=$null
$isInstallationReussie=Invoke-command { ... }
[/code:1]
Dans le précédent exemple, l'usage de :
[code:1]
$result -eq \"yes\"
[/code:1]
Permet de renvoyer une valeur de type boolean :
[code:1]
$installationdulogiciel= \"ok\"
$result=$installationdulogiciel -like \"ok\"
$result.GetType()
#Boolean
[/code:1]
On peut ainsi simplifier l'écriture :
[code:1]
$isInstallationReussie=Invoke-command {
#ton traitement...
#test de l'installation
write-output ($installationdulogiciel -like \"ok\"«»)
} #Invoke-command
[/code:1]
Ta variable $isInstallationReussie contient soit $true soit $false
[code:1]
$isInstallationReussie=Invoke-command {
#ton traitement...
#test de l'installation
write-output ($installationdulogiciel -like \"ok\"«»)
} #Invoke-command
if ($isInstallationReussie) #equivalent à ($isInstallationReussie -eq $True)
{
#...écrire dans un fichier
}
else
{
??? TODO
}
[/code:1]
Ainsi tu propages la valeur sans avoir à gérer le scope de ta variable.<br><br>Message édité par: Laurent Dardenne, à: 11/07/16 17:06
:-/J'ai du mal à comprendre comment la mettre en place.
La variable OutVariable est redondante si tu émets ton résultat dans le pipeline.
le code associé au cmdlet Invoke-command doit renvoyer ton résultat :
[code:1]
$isInstallationReussie=Invoke-command {
#ton traitement...
#test de l'installation
if ($installationdulogiciel -like \"ok\"«»)
{
write-output \"yes\" # Write-output précise l'intention
}
else
{ write-output \"No\" }
} #Invoke-command
[/code:1]
La variable $isInstallationReussie contient le résultat 'yes' ou 'No'.
Mais tu dois t'assurer que ton code renvoi une et une seule valeur.
Virtual76 écrit:
Oui, initialise là à $null.Avant le invoke je déclare la variable installation
[code:1]
$isInstallationReussie=$null
$isInstallationReussie=Invoke-command { ... }
[/code:1]
Dans le précédent exemple, l'usage de :
[code:1]
$result -eq \"yes\"
[/code:1]
Permet de renvoyer une valeur de type boolean :
[code:1]
$installationdulogiciel= \"ok\"
$result=$installationdulogiciel -like \"ok\"
$result.GetType()
#Boolean
[/code:1]
On peut ainsi simplifier l'écriture :
[code:1]
$isInstallationReussie=Invoke-command {
#ton traitement...
#test de l'installation
write-output ($installationdulogiciel -like \"ok\"«»)
} #Invoke-command
[/code:1]
Ta variable $isInstallationReussie contient soit $true soit $false
[code:1]
$isInstallationReussie=Invoke-command {
#ton traitement...
#test de l'installation
write-output ($installationdulogiciel -like \"ok\"«»)
} #Invoke-command
if ($isInstallationReussie) #equivalent à ($isInstallationReussie -eq $True)
{
#...écrire dans un fichier
}
else
{
??? TODO
}
[/code:1]
Ainsi tu propages la valeur sans avoir à gérer le scope de ta variable.<br><br>Message édité par: Laurent Dardenne, à: 11/07/16 17:06
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 #22070
par Virtual76
Réponse de Virtual76 sur le sujet Re:Récupérer une variable dans un Foreach
Merci Laurent!
J'ai enfin la solution.
J'ai utilisé un \"return\" tout simplement
[code:1]
$ResultInstallation = invoke-command {
...mon traitement
...mon test d'installation
if $installation = \"ok\"
{
return \"ok\"
}
else
...
} #fin invoke
if ($ResultInstallation -eq \"ok\"«»)
{
...écrire dans mon fichier que l'install est ok
}
else
{
...écrire dans mon fichier que l'install
n'est pas ok.
}
[/code:1]
J'ai bien sûr beaucoup simplifié dans cet exemple, mais le principe fonctionne a merveille.
J'ai enfin la solution.
J'ai utilisé un \"return\" tout simplement
[code:1]
$ResultInstallation = invoke-command {
...mon traitement
...mon test d'installation
if $installation = \"ok\"
{
return \"ok\"
}
else
...
} #fin invoke
if ($ResultInstallation -eq \"ok\"«»)
{
...écrire dans mon fichier que l'install est ok
}
else
{
...écrire dans mon fichier que l'install
n'est pas ok.
}
[/code:1]
J'ai bien sûr beaucoup simplifié dans cet exemple, mais le principe fonctionne a merveille.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Récupérer une variable dans un Foreach