Como suprir a janela PowerShell ao usar a opção -File
-
25-09-2019 - |
Pergunta
Estou chamando o PowerShell como assim:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -noninteractive -nologo -file "C:\Users\dummy\Documents\dev\powershell\samples\test.ps1"
Estou chamando isso de um script python, mas o mesmo problema pode ser observado se chamado por meio de um atalho. Eu pensei o -NonInteractive
A bandeira faria com que Poweshell fosse executado em uma janela escondida, mas não. Existe uma maneira de suprimir a janela do console ao chamar PowerShell de um aplicativo externo?
Solução baseada na sugestão de Johannes Rössel
import subprocess
st_inf = subprocess.STARTUPINFO()
st_inf.dwFlags = st_inf.dwFlags | subprocess.STARTF_USESHOWWINDOW
subprocess.Popen(["notepad"], startupinfo=st_inf)
Solução
Você pode passar argumentos apropriados para CreateProcess ou Process.start Para suprimir a janela do console.
No entanto, PowerShell também tem um -WindowStyle
Parâmetro que você pode definir como oculto.
Outras dicas
Eu não tive sorte com -WindowStyle Hidden
, porque uma janela do console parecia sempre que por um tempo.
É por isso que eu uso um exe ajudante chamado psrun.exe que faz exatamente isso. Você pode baixar o arquivo de origem e exe Execute tarefas agendadas com a GUI Winform em PowerShell. Eu o uso para tarefas programadas.
(Observe que o parâmetro -windowstyle está disponível apenas para v2.)
Usar -WindowStyle Hidden
. Ver aqui.