2017-10-03 2 views
0

Je tente simplement d'obtenir un code de réussite ou d'échec à partir d'un script PowerShell lorsqu'il est exécuté via VBScript avec CreateObject("WScript.Shell").Run(strCMD, 0, True).Code de sortie PowerShell lors de l'exécution à partir de VBScript

Je pensais que Exit a produit un code de sortie, mais quand je termine mon script PS avec Exit 9 la valeur renvoyée au VBScript ci-dessus est toujours 0.

Le VBScript est:

strCmd = "powershell.exe -noLogo -executionpolicy bypass -file ""\\Mac\Px\Support\Px Tools\Dev 3.3.#\_Spikes\TestMessage.ps1"" -message:""I'm ALIVE""" 
result = CreateObject("WScript.Shell").Run(strCMD, 0, True) 
msgBox result 

Répondre

0

Essayez ceci:

Set wso=CreateObject("WScript.Shell") 
rc=wso.Run(strCMD, 0, True) 
MsgBox "returncode=" & rc 
+0

C'est essentiellement ce que je fais. Mes variables sont différentes, et j'introduis le CreateObject, mais c'est la même fonctionnalité. J'ai mis à jour l'OP pour montrer le code réel. – Gordon

+0

Testé avec le plus simple .ps1 ('exit 9') et cela fonctionne. Qu'y a-t-il dans votre .ps1? – SBF

+0

J'ai testé avec juste la sortie 9 aussi. Toujours pas de joie, la seule chose à obtenir est 0. BTW, comment obtenez-vous le formatage du code dans les commentaires? ;) – Gordon

1

Utilisez Return "Your Value" dans votre script ps au lieu de Exit

Prenez powershell de soins sera de retour tout ce qui sera imprimé à la console

+0

guiwhatsthat, je n'ai pas essayé Exit, Return et Write-Host. Aucune d'entre elles ne semble fonctionner avec la méthode .Run de VBScript. Est-ce que cela fonctionne réellement pour vous? FWIW, j'utilise PS 2.0, parce que je dois. Je suppose que j'ai besoin de faire tourner une machine virtuelle Windows 10 et de la tester dans PS actuel. Peut-être que c'est un bug dans PS 2.0. – Gordon

+0

'return' ne fonctionne pas - doit être' exit' – SBF

+0

J'ai fait un exemple rapide avec powershell. J'ai eu une valeur de retour avec le retour et avec la sortie je n'en ai pas eu. Remarque Le retour ne mettra pas fin à votre script – guiwhatsthat

0

Il suffit d'écrire

exit 123 

dans TestMessage.ps1