Question [Résolu] Récupérer une variable dans un Foreach

Plus d'informations
il y a 9 ans 8 mois #22060 par Laurent Dardenne
Virtual76 écrit:

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:

Avant le invoke je déclare la variable installation

Oui, initialise là à $null.
[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.

Plus d'informations
il y a 9 ans 8 mois #22070 par Virtual76
Merci Laurent!
J'ai enfin la solution.
J'ai utilisé un \&quot;return\&quot; tout simplement :)

[code:1]

$ResultInstallation = invoke-command {

...mon traitement
...mon test d'installation
if $installation = \&quot;ok\&quot;
{
return \&quot;ok\&quot;
}
else
...
} #fin invoke

if ($ResultInstallation -eq \&quot;ok\&quot;«»)
{
...é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
Propulsé par Kunena