2010-03-07 6 views
2

J'appelle Powershell comme ceci:Comment SUPRESS fenêtre Powershell lorsque vous utilisez l'option -File

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -noninteractive -nologo -file "C:\Users\dummy\Documents\dev\powershell\samples\test.ps1" 

Je l'appeler à partir d'un script python, mais peut être observé le même problème si elle est appelée par un raccourci. Je pensais que le drapeau -NonInteractive provoquerait l'exécution de Poweshell dans une fenêtre cachée, mais ce n'est pas le cas. Est-il possible de supprimer la fenêtre de la console lors de l'appel de Powershell à partir d'une application externe?

solution basée sur la suggestion Johannes Rössel

import subprocess 
st_inf = subprocess.STARTUPINFO() 
st_inf.dwFlags = st_inf.dwFlags | subprocess.STARTF_USESHOWWINDOW 
subprocess.Popen(["notepad"], startupinfo=st_inf) 
+0

FYI: Je pense que '-NonInteractive' dit simplement:. * Ne produit pas les invites * – Cheeso

Répondre

2

Vous pouvez transmettre des arguments appropriés pour CreateProcess ou Process.Start pour supprimer la fenêtre de la console. Toutefois, PowerShell possède également un paramètre -WindowStyle que vous pouvez définir comme masqué.

+0

La première méthode a fonctionné comme un charme. Danke vielmals! – guillermooo

0

Utilisez -WindowStyle Hidden. Voir here.

+0

C'est l'une des premières choses que j'ai essayé, mais ça ne marche pas. – guillermooo

+0

Utilisez-vous la version 2? – CesarGon

+0

Oui, je suis sur Win7. – guillermooo

1

Je n'avais pas de chance avec -WindowStyle Hidden, parce qu'une fenêtre de console est apparue à chaque fois pendant un moment.

C'est pourquoi j'utilise un assistant exe appelé PsRun.exe qui fait exactement cela. Vous pouvez télécharger le fichier source et exe Run scheduled tasks with WinForm GUI in PowerShell. Je l'utilise pour les tâches planifiées.

(Notez que le paramètre -windowstyle est disponible uniquement pour V2.)

Questions connexes