Il arrive parfois que vous soyez déjà en possession d’un script VBscript, et que le temps vous manque pour le traduire en PowerShell. Dans ce cas, sachez qu’il est possible de lancer un script VBscript depuis PowerShell (en réalité PowerShell peut lancer à peu près tout ce qui est exécutable).
Prenons l’exemple du script VBscript suivant :
reponse = MsgBox("Connaissez-vous PowerShell ?",vbYesNo + vbQuestion)
if reponse= vbYes then
WScript.Quit 1
elseif reponse = vbNo then
WScript.Quit 2
end if
Comme vous pouvez le remarquer, il s’agit simplement d’une boîte de dialogue qui s'ouvre et qui pose une question. En fonction de la réponse, le code de retour du script (WScript.Quit) aborde différentes valeurs numériques :
- 1 si la réponse est oui
- 2 si la réponse est non
Maintenant, essayons de voir comment PowerShell peut appeler ce script, et en récupérer la valeur de retour. Il est très important d’appeler le script VBScript via cscript.exe et non pas avec wscript.exe (ce qui est proposé par défaut). Seul cscript.exe est capable de renvoyer des valeurs de retour. Une fois que PowerShell a appelé le script VBScript, il peut alors récupérer la valeur de retour dans la variable $LASTEXITCODE (ceci est vrai pour une grande majorité des exécutables qui retournent une valeur).
Lancement du script :
Le résultat via la variable $LASTEXITCODE :
Le résultat peut ensuite être analysé en fonction d’une structure de type Switch :
cscript C:\Temp\Script.vbs
switch ($LASTEXITCODE) {
1 {"La réponse est Oui"}
2 {"La réponse est Non!"}
default {"Pas de valeur de retour »}
}
|