Usa PowerShell para crear y ver las tareas programadas en Windows

Usa PowerShell para crear y ver las tareas programadas en Windows

Fran Castañeda

Por lo general existen tareas que realizamos de forma manual en nuestro ordenador, como iniciar programas, eliminar archivos antiguos o limpiar algunos datos. Windows 10 también nos ofrece la posibilidad de ayudar a automatizar estas tareas para que podamos hacer más en menos tiempos. Si bien la aplicación de Programador de tareas es la que ofrece un entorno más conveniente para esta labor, también disponemos de otras opciones como usar PowerShell.

Tanto CMD como PowerShell se incluyen de forma predeterminada en Windows y se encargan de funcionar a través de comandos y scripts que nos van a permitir tener un mayor control sobre el sistema operativo. Sin embargo, en la mayor parte de las ocasiones, para poder utilizar y sacar provecho de sus ventajas será necesario tener unos conocimientos avanzados sobre Windows.

Y es que usando la opción de PowerShell podremos programar, modificar y eliminar tareas. Esto nos puede resultar de gran utilidad cuando necesitemos agilizar el proceso de creación de tareas en varios dispositivos o bien si necesitamos crear un script que necesite interactuar con la consola. Es por ello que hoy vamos a ver cómo podemos crear o eliminar tareas programas, utilizando para ello PowerShell de Windows.

Qué es PowerShell y para qué sirve

También conocido como Windows PowerShell es una utilidad en línea de comandos que se presenta como una versión mejorada y avanzada del tradicional Símbolo del sistema, que nos va permitir ejecutar diferentes uniones de comandos, denominados Scripts, facilitándonos con ello la creación, configuración y automatización de múltiples tareas. Se encuentra basado en .NET CLR por lo que resulta ideal para la automatización de procesos. Por lo tanto, estamos ante una herramienta que dada su flexibilidad suele ser utilizada tanto por ingenieros como analistas de sistema de forma habitual.

A diferencia de otras interfaces de línea de comando como CMD, PowerShell puede trabajar con objetos más allá de un simple comando. Gracias a su completa interfaz de scripts podemos llevar a cabo funciones específicas bajo el sistema operativo Windows, como, por ejemplo, lanzar diferentes comandos para la automatización de diferentes tareas. Además, nos ofrece la posibilidad de poder añadir la consola otros comandos que hayan sido creados por los propios usuarios.

Aunque para muchos usuarios, sobre todo con conocimientos básicos sobre el sistema operativo de Microsoft, PowerShell es una herramienta completamente desconocida, lo cierto es que ya era compatible con Windows XP, con la salvedad de que era necesario descargarla para poder utilizarla. Desde la llegada de Windows 10, PowerShell ya se encuentra preinstalado, cobrando un mayor protagonismo y visibilidad para que el acceso sea más fácil dentro del sistema operativo de Microsoft.

Crear una tarea programadas con PowerShell

Lo primero que debemos hacer será abrir PowerShell otorgándole privilegios de administrador. Para ello, usaremos el buscador del menú de Inicio donde escribiremos powershell. Una vez nos aparezca la aplicación pulsaremos en Ejecutar como administrador.

Ejecutar PowerShell como administrador

A continuación, nos aparecerá una ventana advirtiéndonos que la aplicación hará cambios en el dispositivo, por lo que pulsamos en Sí y nos aparecerá la pantalla de PowerShell de forma visible, desde donde comenzaremos a escribir los comandos necesarios para crear nuestras tareas programadas.

Una vez nos haya aparecido la pantalla de PowerShell debemos de ingresar el siguiente comando:

$action = New-ScheduledTaskAction -Execute 'app-path'

PowerShell app path

Posteriormente, debemos de tener en cuenta que debemos de reemplazar la ruta de la aplicación por la ruta original de la aplicación que deseamos ejecutar. Por ejemplo, si queremos abrir Mozilla Firefox debemos usar el archivo Firefox.exe, por lo que la ruta completa quedaría del siguiente modo:

$action = New-ScheduledTaskAction -Execute 'C: / Archivos de programa / Mozilla Firefox / firefox.exe'

PowerShell programar tarea para Firefox

En el caso de que necesitemos crear un script de PowerShell será necesario usar “-argument” y especificar el script. De esta forma el resultado final debería de quedar tal que así

New-ScheduledTaskAction -Execute 'powershell.exe' -argument script-path

El siguiente paso va consistir en establecer la hora en la que deseamos ejecutar la tarea que queremos programar, pudiendo elegir cualquier hora que necesitemos. Podemos elegir entre el formato de 12 o 24 horas. En el caso de que elijamos un formato de 12 horas debemos acompañarlo de AM / PM a la hora especificada en el comando. Por ejemplo, podemos programar que el programa se ejecute una vez a las 07:00 P.M o bien a las 19.00 horas del mismo día. También será posible configurarlo para que se active de manera diaria, semanal, mensual, etc.

Para ello debemos de usar el siguiente comando:

$trigger = New-ScheduledTaskTrigger -Once -At 07:00PM

PowerShell comando para establecer hora de tarea programada

A continuación, debemos registrar la tarea que vamos a programar debemos de ingresar el siguiente comando, cambiando DemoName, DemoTask y  DemoDescription  según nuestras preferencias :

Register-ScheduledTask -Action $action -Trigger $trigger -TaskPath "DemoName" -TaskName "DemoTask" -Description "DemoDescription"

PowerShell registrar la tarea programada

Una vez hecho esto, el sistema habrá automatizado la tarea que hayamos programado y se ejecutará siempre a la hora que hemos establecido. En el momento que ya no queramos seguir llevando a cabo la programación de esta tarea, debemos proceder a eliminarla.

Eliminar una tarea programada con PowerShell

Para eliminar cualquier tarea programa, debemos de iniciar nuevamente PowerShell con privilegios de administrador. Escribiremos powershell en el buscador del menú de Inicio.  Una vez nos aparezca la aplicación pulsaremos en «Ejecutar como administrador». A continuación, nos aparecerá una ventana advirtiéndonos que la aplicación hará cambios en el dispositivo, por lo que, nuevamente, pulsamos en Sí y nos aparecerá la pantalla de PowerShell de forma visible.

Una vez nos ha aparecido la ventana de PowerShell debemos de ingresar el siguiente comando, debiendo reemplazar DemoTask por el nombre de la tarea original:

Unregister-ScheduledTask -TaskName "DemoTask" -Confirm: $false

PowerShell borrar tarea programada

Una vez hecho esto, pulsamos enter y la tarea quedará eliminada. De manera opcional, podemos escribir el siguiente comando para confirmar que se ha eliminado la tarea y asegurarnos de que no va seguir ejecutándose de manera programada. Para ello escribiremos:

Get-ScheduledTask -TaskName "DemoTask"

PowerShell comprobar si la tarea programa se ha eliminado

Este comando será el encargado de confirmar que la tarea DemoTask ya no se encuentra disponible. Una vez hayamos completado los pasos, debemos de recibir un mensaje de error. Esto nos indicará que no existe ninguna tarea con ese nombre específico. Esto significa que la tarea que teníamos programada ya ha sido eliminada de forma correcta con anterioridad.

Administrar tareas programadas con PowerShell

El comando PowerShell de Windows también nos va permitir la posibilidad de administrar tareas. Para ello utilizamos el comando Get-ScheduledTask que se encargará de devolver todas o algunas de las tareas programadas por nuestro equipo.

Para realizar esta acción sólo será necesario iniciar PowerShell como administrador y una vez en la ventana escribir el siguiente comando:

Get-ScheduledTask

PowerShell usar comando Get-ScheduledTask

Al usar solo el comando básico se nos enumerará todas las tareas del ordenador ordenadas por ruta. Podemos apreciar como se incluye la ruta de la tarea, el nombre de la tarea y el estado en el que se encuentra. Mediante el nombre podemos identificar la tarea mientras que el apartado de estado (State) nos indicará si está activada o desactivada.

En PowerShell también podemos desactivar o activar las tareas seleccionadas, mediante el uso de los comandos Disable-ScheduledTask y Enable-ScheduledTask. En el caso de que ejecutemos los comandos directamente, será necesario que especifiquemos el nombre de la tarea o las rutas.

Por ejemplo, si queremos desactivar las tareas relativas a Google utilizaremos el comando Disable-ScheduledTask, que será el encargado de deshabilitarlo. Para ello escribimos el siguiente comando.

Get-ScheduledTask -taskname google* | Disable-ScheduledTask

PowerShell usar comando Disable-ScheduledTask

En el caso de que queramos activar todas las tareas de Google utilizaremos el comando realizaremos utilizaremos la misma línea de comando anterior salvo que en este caso usaremos al final Enable-ScheduledTask, que será el encargado de ordenar la habilitación de la tarea.

Get-ScheduledTask -taskname google* | Enable-ScheduledTask

PowerShell Enable-ScheduledTask