Comment supprimer la fenêtre Powershell lorsque vous utilisez l'option -File
-
25-09-2019 - |
Question
J'appelle Powershell comme ceci:
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 via un raccourci. Je pensais que le drapeau -NonInteractive
causerait Poweshell d'exécuter dans une fenêtre cachée, mais il ne fonctionne pas. Est-il possible de la fenêtre supprimant la console lors de l'appel 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)
La solution
Vous pouvez transmettre des arguments appropriés pour CreateProcess ou Process.Start pour supprimer la fenêtre de la console.
Cependant, PowerShell a également un paramètre de -WindowStyle
que vous pouvez définir le masquer.
Autres conseils
J'ai eu pas de chance avec -WindowStyle Hidden
, parce qu'une fenêtre de console est apparue à chaque fois pendant un certain temps.
Voilà pourquoi j'utilise un exe d'aide appelé PsRun.exe qui fait exactement cela. Vous pouvez télécharger le fichier source et exe Exécuter les tâches planifiées avec l'interface graphique WinForm dans PowerShell . Je l'utilise pour les tâches planifiées.
(Notez que le paramètre -windowstyle est disponible uniquement pour V2.)