Il est un peu difficile d'expliquer ce dont j'ai besoin, mais veuillez jeter un œil à l'exemple de code simplifié ci-dessous pour comprendre, une telle approche est nécessaire pour exécuter un script en mode 64 bits dans des circonstances très spécifiques:

$x=0
$command = {
 $a=1
 $b=2
 $x=$a

 $r=$a+$b
}

$Result = C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -Command $command
write-host($x)

Le résultat final de cette exécution de la commande $ est 3, mais j'ai également besoin de passer la valeur $ x, ce qui est valorisé à l'intérieur de la commande $, dans l'exemple actuel $ x = 0 à la fin.

Ma question est la suivante: y a-t-il une possibilité de passer des valeurs de variables, qui sont évaluées à l'intérieur de la variable de commande? Dans l'exemple ci-dessus, est-il possible de passer par les valeurs des variables $ a et $ b?

0
Ziil 3 sept. 2020 à 16:38

2 réponses

Meilleure réponse

Je ne sais pas pourquoi vous appelez PowerShell depuis PowerShell, mais:

PS> $command = {
$a=1
$b=2

Return $a+$b
}

$x = & $command

$x

3

Vous pouvez exécuter la variable de commande avec l'opérateur d'appel (&) et obtenir votre résultat.

HTH

0
RetiredGeek 3 sept. 2020 à 13:53

Je ne sais pas ce que X = 0 et l'hôte d'écriture ont à voir avec l'exécution de la commande dans un autre processus et la récupération des résultats. Votre scriptblock de commande ne crée aucune sortie dans son état actuel et donc rien ne sera capturé dans $Result

Il semble que vous ayez l'intention de faire un calcul avec $a et $b, mais dites ensuite que vous voulez transmettre les valeurs de ceux-ci. Voulez-vous calculer en interne et ensuite simplement afficher ce qu'ils étaient à l'origine? Vous pouvez simplement générer une table de hachage ou un pscustomobject et utiliser cette sortie comme ceci.

$command = {
    $a=1
    $b=2
    $x=$a

    $r = $a + $b
    @{A=$a;B=$b}
}
$Result = C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -Command $command

$Result

Name                           Value                                                                                                                                                          
----                           -----                                                                                                                                                          
A                              1                                                                                                                                                              
B                              2    

$result.a

1
0
Doug Maurer 3 sept. 2020 à 15:51