2017-01-22 4 views
1

J'ai travaillé pour rendre les processus manuels plus d'un processus en un clic et j'ai rencontré un problème avec ces popups msgbox d'un script vbs. Essentiellement, je me sers et Powershell faire quelque chose comme:Est-il possible de réagir à vbscript msgbox à partir du script powershell?

foreach ($loc in $locs): 
    & cscript $loc 

Lorsque la loc $ en $ locs est une variable qui contient le chemin d'un fichier .vbs qui doit être exécuté.

Le problème est que l'un de nos développeurs inclus deux instructions msgbox dans chacun des fichiers .vbs et ceux-ci surgissent et vous obligent à cliquer sur OK. Il serait trivial d'éditer les scripts vbs et de les supprimer, mais je ne veux pas changer les scripts de nos développeurs - donc la question est: est-il possible de faire réagir powershell aux msgbox (s) qui sont générées à partir de la ligne cscript ? Je ne suis pas sûr de la façon dont je mettrais la boîte dans son contexte ou y réagirais via PowerShell.

Répondre

5

exécuter les scripts en mode batch, cela empêchera toute exécution rapide de stabulation:

foreach ($loc in $locs){ 
    & cscript //B $loc 
} 

Dans le message d'utilisation cscript /?:

Usage: CScript scriptname.extension [option...] [arguments...] 

Options: 
//B   Batch mode: Suppresses script errors and prompts from displaying 
//D   Enable Active Debugging 
//E:engine Use engine for executing script 
//H:CScript Changes the default script host to CScript.exe 
//H:WScript Changes the default script host to WScript.exe (default) 
//I   Interactive mode (default, opposite of //B) 
... 
+0

Tant de temps est allé dans overthinking que. Je vais essayer, mais il semble que ça devrait probablement marcher. – abou

+0

J'ai essayé cela et je vais accepter la réponse parce qu'elle répond à la question posée. Je ne peux pas utiliser ceci parce que les vbs appellent à leur tour sqlplus et sqlldr et ceux-ci ne s'exécutent pas avec ce commutateur. – abou