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)
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top