Cómo ejecutar un script de PowerShell sin mostrar una ventana
-
Usa el parámetro
-WindowStyle Hidden
de PowerShell para ejecutar un script de PowerShell sin mostrar una ventana - Usa el Programador de Tareas para ejecutar un script de PowerShell sin mostrar una ventana
- Usa herramientas de terceros para ejecutar un script de PowerShell sin mostrar una ventana
- Conclusión

PowerShell de Microsoft es una herramienta que viene por defecto con los sistemas operativos Windows, permitiendo a los usuarios de Windows funciones de automatización basadas en interfaces de línea de comandos y comandos.
PowerShell es una herramienta de scripting y automatización; por lo tanto, a veces requiere que la aplicación se ejecute en segundo plano de manera silenciosa. A través de este artículo, veremos cómo ejecutar la aplicación PowerShell de manera silenciosa en el fondo, ejecutando comandos en segundo plano.
Existen herramientas de terceros que puedes incorporar con las herramientas de PowerShell para lograr la funcionalidad oculta de PowerShell. Sin embargo, hay formas fáciles de hacer esto solo con PowerShell.
Usa el parámetro -WindowStyle Hidden
de PowerShell para ejecutar un script de PowerShell sin mostrar una ventana
Una forma simple de ocultar la ventana del script sería utilizando el tipo hidden
como estilo de ventana. Una ventana de PowerShell con estilo de ventana se mostraría brevemente al principio y luego se ocultaría durante la ejecución del script.
El parámetro -WindowStyle
en PowerShell te permite controlar la apariencia de la ventana de PowerShell. El parámetro -WindowStyle Hidden
, cuando se aplica, asegura que la ventana de PowerShell no se mostrará durante la ejecución del script.
Esto es especialmente útil para tareas que requieren automatización sin interacción del usuario o cuando no deseas interrumpir el flujo de trabajo del usuario.
Ejecutar un script de PowerShell con el parámetro -WindowStyle Hidden
es sencillo. Abre una ventana de PowerShell y usa el siguiente comando:
PowerShell.exe -WindowStyle Hidden { Script you want to execute.. }
Esto es lo que hace cada parte del comando:
PowerShell.exe
: Inicia un nuevo proceso de PowerShell.-WindowStyle Hidden
: Establece el estilo de ventana en oculto, evitando que la ventana de PowerShell se muestre.- El script que deseas ejecutar está encerrado entre llaves
{}
.
La ejecución de PowerShell del comando anterior se muestra en la imagen a continuación.
Una vez ingresado, la ventana desaparece, pero la aplicación seguirá ejecutándose en segundo plano. Como se muestra en la imagen a continuación de los procesos en segundo plano, PowerShell se ejecuta como un proceso en segundo plano.
En este método, el usuario vería inicialmente PowerShell. Por lo tanto, no está realmente oculto para los usuarios finales. Incluso si la tarea se programó previamente, la ventana aparecería y se ocultaría rápidamente.
Usa un archivo por lotes
Si estás tratando con un script más complejo o planeas ejecutarlo varias veces, este método (archivo por lotes con comando PowerShell) puede ser más organizado y eficiente.
Crea un archivo por lotes (por ejemplo, run_script.bat
) con el siguiente contenido:
@echo off
powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
@echo off
: Este comando impide que el archivo por lotes muestre sus comandos en la ventana de la consola.powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
: Esta línea llama a PowerShell con los parámetros necesarios y la ruta al script.
Ambos códigos anteriores logran el mismo objetivo de ejecutar un script de PowerShell sin mostrar una ventana, pero utilizan enfoques ligeramente diferentes. Sin embargo, hay otros métodos simples para lograr la verdadera funcionalidad oculta de PowerShell.
Usa el Programador de Tareas para ejecutar un script de PowerShell sin mostrar una ventana
El Programador de Tareas es una utilidad de Windows que te permite automatizar tareas en momentos o eventos específicos. Proporciona una amplia gama de opciones para personalización, lo que lo convierte en una herramienta versátil para gestionar varias tareas en tu computadora.
Crear una nueva tarea
- Abre el Programador de Tareas: Puedes hacer esto buscando
"Programador de Tareas"
en el menú de inicio de Windows. - Navegar a
"Acciones"
: Haz clic en"Crear tarea"
en el panel derecho.
Configurando la tarea
- Nombra la tarea: Proporciona un nombre y una descripción para tu tarea. Esto debería ser algo descriptivo que refleje lo que hace la tarea.
- Elige el disparador de la tarea: Selecciona cómo deseas activar la tarea. Las opciones incluyen diaria, semanal, mensual, al iniciar sesión, etc. Elige el disparador que mejor se adapte a tus necesidades.
Configurando los disparadores
- Selecciona los detalles del disparador: Dependiendo del disparador que elijas, necesitarás proporcionar detalles adicionales. Por ejemplo, si eliges
"Diario"
, especificarás la hora y la frecuencia. - Configuraciones avanzadas: Puedes establecer opciones más avanzadas haciendo clic en
"Configuraciones avanzadas"
. Esto te permite personalizar aún más cuándo y con qué frecuencia se ejecuta la tarea.
Especificando acciones
- Selecciona acción: En el paso de
"Acciones"
, elige"Nueva"
>"Iniciar un programa"
ya que ejecutaremos un script de PowerShell. - Programa/script: Navega y selecciona
powershell.exe
en tu sistema. - Agregar argumentos (opcional): Ingresa lo siguiente:
-WindowStyle Hidden -File "C:\path\to\script.ps1"
Reemplaza "C:\path\to\your\script.ps1"
con la ruta real a tu script de PowerShell.
Habilitando opciones de seguridad
Marca la casilla que dice "Ejecutar con los mayores privilegios"
. Esto asegura que el script se ejecute con privilegios de administrador si es necesario.
También puedes hacer clic en Ejecutar independientemente de si el usuario ha iniciado sesión o no
, y no mostrará nunca la ventana de PowerShell cuando se ejecute la tarea.
Completando y probando la tarea
Revisa el resumen de la tarea y haz clic en "OK"
para crearla.
Puedes probar la tarea haciendo clic derecho sobre ella en el Programador de Tareas y seleccionando "Ejecutar"
. Esto ejecutará la tarea inmediatamente de acuerdo con los disparadores que has configurado.
El Programador de Tareas te permite automatizar tareas en intervalos o eventos específicos. Al usarlo para activar PowerShell con los argumentos apropiados, puedes ejecutar scripts de manera silenciosa.
Sin embargo, este método afectaría la funcionalidad de algunos scripts que intentes utilizar. Por lo tanto, también puedes utilizar herramientas de terceros o extensiones de la comunidad para PowerShell.
Usa herramientas de terceros para ejecutar un script de PowerShell sin mostrar una ventana
Las herramientas de terceros amplían las capacidades de PowerShell al proporcionar funcionalidades y características adicionales. Cuando se trata de ejecutar scripts de PowerShell sin mostrar una ventana, estas herramientas juegan un papel crucial en la automatización de tareas sin problemas.
Usa PSExec
PSExec
es una herramienta versátil de Sysinternals
(ahora parte de Microsoft) que te permite ejecutar procesos de forma remota. Puede usarse para ejecutar scripts de PowerShell de manera silenciosa.
psexec -d -s powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
psexec
: IniciaPSExec
.-d
: Indica aPSExec
que no espere a que el comando se complete.-s
: Ejecuta el comando con permisos del sistema.powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
: Ejecuta el script de PowerShell de manera silenciosa.
Usa NSSM (Non-Sucking Service Manager)
NSSM
es un administrador de servicios para Windows que te permite ejecutar cualquier aplicación como un servicio. Esto puede ser particularmente útil para ejecutar scripts de manera silenciosa en segundo plano.
- Descarga e instala NSSM desde la página oficial.
- Abre un símbolo del sistema con privilegios administrativos.
- Ejecuta el siguiente comando para crear un nuevo servicio:
nssm install <ServiceName> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
nssm install <ServiceName>
: Instala un nuevo servicio con el nombre especificado."C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
: Especifica la ruta al ejecutable de PowerShell."-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
: Pasa parámetros a PowerShell, indicándole que ejecute el script de forma silenciosa.
Conclusión
PowerShell es una poderosa herramienta de automatización para los usuarios de Windows, proporcionando amplias capacidades de línea de comandos. En escenarios donde la ejecución silenciosa en segundo plano es necesaria, hay varios métodos disponibles.
- Usar el parámetro
-WindowStyle Hidden
: Esto permite una breve visibilidad de la ventana de PowerShell antes de ocultarla durante la ejecución del script. Es adecuado para tareas que requieren automatización sin interacción del usuario. - Archivos por lotes: Organizados para ejecutar scripts complejos o repetidos. Los archivos por lotes llaman a PowerShell con los parámetros necesarios.
- Programador de Tareas: Ofrece automatización en momentos específicos o eventos. Al configurarlo para ejecutar PowerShell con los parámetros correctos, se pueden ejecutar scripts de manera silenciosa.
- Herramientas de terceros (por ejemplo,
PSExec
,NSSM
): Amplían las capacidades de PowerShell, permitiendo la ejecución de scripts sin ventana.
Elige el método que mejor se adapte a tus necesidades específicas y flujo de trabajo.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.