¿Cómo es posible ejecutar un script de PowerShell sin mostrar una ventana o cualquier otro signo al usuario?
En otras palabras, el script debe ejecutarse silenciosamente en segundo plano sin ningún signo para el usuario.
Crédito adicional por una respuesta que no utiliza componentes de terceros :)
windows
powershell
scripting
batch-file
silent
Thomas Bratt
fuente
fuente
Respuestas:
Puede ejecutarlo así (pero esto muestra una ventana por un tiempo):
O usa un archivo auxiliar que creé para evitar la ventana llamada PsRun.exe que hace exactamente eso. Puedes descargar la fuente y el archivo exe Ejecutar tareas programadas con WinForm GUI en PowerShell . Lo uso para tareas programadas.
Editado: como señaló Marco, este parámetro -windowstyle está disponible solo para V2.
fuente
-WindowStyle Hidden
que la tarea esté configuradaRun whether user is logged on or not
en la pestaña General en la sección "Opciones de seguridad".Estaba teniendo este mismo problema. Descubrí que si va a la Tarea en el Programador de tareas que ejecuta el script powershell.exe , puede hacer clic en " Ejecutar si el usuario inició sesión o no " y eso nunca mostrará la ventana de Powershell cuando se ejecuta la tarea.
fuente
Puede usar las Extensiones de comunidad de PowerShell y hacer esto:
También puede hacer esto con VBScript:
http://blog.sapien.com/index.php/2006/12/26/more-fun-with-scheduled-powershell/Programar tareas ocultas de PowerShell (archivo de Internet)
Más diversión con PowerShell programado (Internet Archive)
(A través de este hilo del foro ).
fuente
Aquí hay un enfoque que no requiere argumentos de línea de comando o un lanzador separado. No es completamente invisible porque una ventana se muestra momentáneamente al inicio. Pero luego se desvanece rápidamente. Donde está bien, creo que este es el enfoque más fácil si desea iniciar su secuencia de comandos haciendo doble clic en el explorador o mediante un acceso directo del menú Inicio (que incluye, por supuesto, el submenú Inicio). Y me gusta que sea parte del código del script en sí, no algo externo.
Pon esto al frente de tu script:
fuente
Aquí hay una frase:
Aunque es posible que esto muestre una ventana muy brevemente, eso debería ser algo raro.
fuente
Estaba teniendo este problema cuando se ejecutaba desde c #, en Windows 7, el servicio "Detección de servicios interactivos" aparecía al ejecutar una ventana oculta de PowerShell como la cuenta SYSTEM.
El uso del parámetro "CreateNoWindow" evitó que el servicio ISD apareciera como advertencia.
fuente
Creo que la mejor manera de ocultar la pantalla de la consola de PowerShell cuando ejecuta scripts en segundo plano es este código ( respuesta " Bluecakes ").
Agrego este código al comienzo de todos mis scripts de PowerShell que necesito ejecutar en segundo plano.
fuente
ps1 oculto del Programador de tareas y acceso directo también
fuente
He creado una pequeña herramienta que pasa la llamada a cualquier herramienta de consola que desee iniciar sin ventanas al archivo original:
https://github.com/Vittel/RunHiddenConsole
Después de compilar, simplemente cambie el nombre del ejecutable a "<targetExecutableName> w.exe" (agregue una "w") y colóquelo junto al ejecutable original. Luego puede llamar a eG powershellw.exe con los parámetros habituales y no aparecerá una ventana emergente.
Si alguien tiene una idea de cómo verificar si el proceso creado está esperando la entrada, me complacerá incluir su solución :)
fuente
MessageBox
sin ningún flash de la ventana al inicio (que requiere un EXE compilado como Winexe, no una aplicación de consola, y que requiere que el Programador de tareas se configure en "Ejecutar solo cuando el usuario ha iniciado sesión en "para que los cuadros de diálogo se muestren en la sesión de escritorio actual.) ¡Gracias por implementar esto, powershellw.exe ha estado en mi lista de deseos durante años!Aquí hay una solución de trabajo en Windows 10 que no incluye ningún componente de terceros. Funciona envolviendo el script de PowerShell en VBScript.
Paso 1: necesitamos cambiar algunas características de Windows para permitir que VBScript ejecute PowerShell y abrir archivos .ps1 con PowerShell de manera predeterminada.
-Ir a ejecutar y escribir "regedit". Haga clic en Aceptar y luego permita que se ejecute.
-pega esta ruta "HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell" y presiona Enter.
-ahora abra la entrada a la derecha y cambie el valor a 0.
-Abra PowerShell como administrador y escriba "Set-ExecutionPolicy -ExecutionPolicy RemoteSigned", presione enter y confirme el cambio con "y" y luego ingrese.
Paso 2: Ahora podemos comenzar a ajustar nuestro script.
-Guarde su script Powershell como un archivo .ps1.
-crear un nuevo documento de texto y pegar este script.
-ahora cambie la ruta del archivo a la ubicación de su script .ps1 y guarde el documento de texto.
-Ahora haga clic derecho en el archivo y vaya a cambiar el nombre. Luego cambie la extensión del nombre de archivo a .vbs y presione Entrar y luego haga clic en Aceptar.
¡HECHO! Si ahora abre .vbs, no debería ver ninguna ventana de consola mientras su script se ejecuta en segundo plano.
¡asegúrate de votar si esto funcionó para ti!
fuente
Aquí hay una demostración divertida de controlar los diversos estados de la consola, incluidos minimizar y ocultar.
fuente