Pregunta

Estoy llamando Powershell de esta manera:

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

Lo estoy llamando desde un script en Python, pero el mismo problema se puede observar si se llama a través de un acceso directo. Pensé que la bandera -NonInteractive causaría PoweShell para ejecutar en una ventana oculta, pero no es así. ¿Hay una manera de suprimiendo la ventana de la consola cuando se llama a Powershell desde una aplicación externa?

Solución basada en Johannes Rössel sugerencia

import subprocess
st_inf = subprocess.STARTUPINFO()
st_inf.dwFlags = st_inf.dwFlags | subprocess.STARTF_USESHOWWINDOW
subprocess.Popen(["notepad"], startupinfo=st_inf)
¿Fue útil?

Solución

Puede pasar argumentos apropiados para CreateProcess o Process.Start para suprimir la ventana de consola.

Sin embargo, PowerShell también tiene un parámetro -WindowStyle que puede ajustarse en Oculto.

Otros consejos

No tuve suerte con -WindowStyle Hidden, debido a que una ventana de la consola cada vez que apareció durante un tiempo.

Es por eso que utilizo un exe ayudante llamados PsRun.exe que hace exactamente eso. Puede descargar la fuente y el archivo exe Ejecutar tareas programadas con WinForm interfaz gráfica de usuario en PowerShell . Yo lo uso para las tareas programadas.

(Tenga en cuenta que el parámetro -windowstyle sólo está disponible para V2.)

Uso -WindowStyle Hidden. Ver aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top