Tengo un powershell
script de Windows que se ejecuta todos los días, todos los días. Se inicia task manager
5 minutos después de la medianoche todas las mañanas, se ejecuta como una aplicación (es decir, en una powershell
consola en mi escritorio) y luego se apaga aproximadamente 5 minutos antes de la medianoche todas las noches.
Ejecutarlo como una aplicación tiene una serie de ventajas. Puedo ver muy fácilmente que se está ejecutando, puedo ver fácilmente que está funcionando (mensajes continuos desplazándose hacia arriba en la pantalla) y puedo forzar un apagado ordenado presionando ctrl+c
en cualquier momento.
La tarea de Windows que inicia esto está configurada para run only when user is logged on
que esté bien el 99% de las veces porque mi cuenta siempre está conectada. Esta opción significa que la tarea siempre se ejecuta como una aplicación en mi escritorio.
Ocasionalmente, un corte de energía o una actualización provocarán un reinicio (cerrar sesión en mi cuenta). Quiero que mi tarea de PowerShell se reinicie, así que agregué un segundo activador a la tarea "al iniciar el sistema". La experimentación muestra que estosolofunciona si la opción run only when user is logged on
se cambia a run whether user is logged on or not
. Sin embargo, esta opción tiene un problema: el proceso de PowerShell ahora aparece en el administrador de tareas como un archivo background process
, no como un archivo app
. Así que ahora no tengo el script ejecutándose en una ventana en mi pantalla, no puedo monitorear su progreso ni puedo cerrarlo limpiamente ( task manager
seguido de End Task
es mi única opción)
Me gustaría que el administrador de tareas ejecute siempre mi script como una aplicación, no como un proceso en segundo plano, así que quiero hacerlo.
- configurar el administrador de tareas para que al reiniciar mi cuenta inicie sesión y el script se inicie como una aplicación, O
- Configure el administrador de tareas para que, si mi cuenta está conectada, el script se inicie como una aplicación y si mi cuenta no está conectada (es decir, después de un corte de energía), entonces (y solo entonces) se inicie como un proceso en segundo plano.
¿O hay otra solución? Básicamente, necesito que el script se ejecute todo el tiempo y necesito poder verlo ejecutándose en una ventana de mi escritorio para poder ver lo que está haciendo.
Respuesta1
Bien, creo que he encontrado una respuesta por mí mismo.
En lugar de una tarea con dos desencadenantes diferentes, he creado dos versiones diferentes de la misma tarea, cada una con un desencadenante diferente.
- Uno está configurado para ejecutarse todas las mañanas 5 minutos después de la medianoche y está configurado en
run only when user is logged on
. Esto se encarga del 99% de las operaciones normales: la tarea se ejecuta como una aplicación de primer plano en una ventana de mi escritorio. - El otro está configurado en
run at system startup
, este está configurado enrun whether user is logged on or not
Esto se ocupa de la ocurrencia muy extraña cuando el trabajo necesita comenzar después de una interrupción no programada. Ok, se ejecuta como un proceso en segundo plano, lo cual es molesto, ¡pero al menos se está ejecutando!