152
El Programador de tareas le permite ejecutar automáticamente varios programas, secuencias de comandos o comandos en Windows de acuerdo con un cronograma, cuando ocurren ciertos eventos, cuando la computadora se enciende o apaga, o cuando el usuario inicia sesión. La forma más común de administrar las tareas del Programador de tareas en Windows es usar el taskchd.msc complemento gráfico de MMC. Sin embargo, puede realizar todas las tareas típicas de administración de tareas programadas de Windows mediante PowerShell. Este artículo le muestra cómo usar PowerShell para crear, modificar, activar, desactivar y eliminar tareas en el programador.
Puede administrar las tareas del Programador de Windows en PowerShell usando el integrado Tareas programadas módulo. Puede enumerar todos los cmdlets disponibles en el módulo ScheduledTasks:
Get-Command -Module ScheduledTasks
- Deshabilitar tarea programada
- Habilitar tarea programada
- Tarea programada de exportación
- Get-ClusteredScheduledTask
- Get-ScheduledTask
- Get-ScheduledTaskInfo
- Nueva tarea programada
- New-ScheduledTaskAction
- Nuevo principal de tareas programadas
- Nuevo conjunto de configuración de tareas programadas
- Nuevo desencadenador de tareas programadas
- Register-ClusteredScheduledTask
- Tarea programada de registro
- Conjunto-ClusteredScheduledTask
- Establecer tarea programada
- Tarea programada de inicio
- Stop-ScheduledTask
- Unregister-ClusteredScheduledTask
- Unregister-ScheduledTask
Creemos una tarea programada simple que reiniciará Windows todos los días a las 8:00 p. m.
Lo primero que debe hacer es crear un disparador que defina el tiempo o las condiciones para que comience la tarea:
$task_trigger= New-ScheduledTaskTrigger -Daily -At 8am
Pista. Para especificar la hora de inicio, use los siguientes parámetros en el cmdlet New-ScheduledTaskTrigger:
-
En
-
A diario
-
Días de la semana
-
Una vez
-
Semanalmente
-
Intervalo de semanas
-
Retraso aleatorio
-
RepeticiónDuración
-
Intervalo de repetición
También es posible utilizar los siguientes eventos del sistema en un disparador:
Luego, debe especificar la acción que debe realizar su trabajo del programador:
$task_action = New-ScheduledTaskAction -Execute 'shutdown.exe' -Argument ' /r /t 60'
Pista. Para ejecutar un archivo de script de PowerShell (PS1) desde el Programador, use el siguiente comando:
$task_action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument -File C:\PS\myscript.ps1'
Ahora puede crear una nueva tarea del programador con el nombre dailyreboot:
Register-ScheduledTask -TaskName 'dailyreboot' -Action $task_action -Trigger $task_trigger
Abra la consola gráfica del Programador de tareas y expanda la Biblioteca del programador de tareas. Debería ver su nueva tarea programada en la lista.
Para iniciar su tarea programada manualmente, ejecute el comando:
Start-ScheduledTask –TaskName dailyreboot
Obtenga información sobre su tarea:
Get-ScheduledTask dailyreboot
Vea el estado de la última ejecución de la tarea y la hora de la próxima ejecución:
Get-ScheduledTask dailyreboot|Get-ScheduledTaskInfo
Mostrar solo tareas programadas activas:
Get-ScheduledTask | where state -eq 'Ready'
Deshabilite la tarea del programador:
Get-ScheduledTask -taskname dailyreboot | Disable-ScheduledTask
Las tareas programadas que están configuradas como ‘Deshabilitadas’ no se ejecutarán automáticamente en la computadora.
Habilitar una tarea programada:
Enable-ScheduledTask-TaskName dailyreboot
Establecer tarea programada le permite cambiar las opciones para la tarea del programador.
Cambiar el activador de la tarea (hora de inicio):
$task_trigger = New-ScheduledTaskTrigger -At 2:00PM -Once Set-ScheduledTask -TaskName dailyreboot -Trigger $Task_trigger
Cambiar la acción en la tarea:
$task_action = New-ScheduledTaskAction -Execute 'ping' -Argument '8.8.8.8' Set-ScheduledTask dailyreboot -Action $task_action
De forma predeterminada, una tarea programada se ejecuta en la cuenta que la creó. Para ejecutar la tarea del programador en nombre del sistema, puede usar el comando:
Set-ScheduledTask -TaskName dailyreboot –User "NT AUTHORITY\SYSTEM"
Eliminar una tarea programada usando PowerShell:
Unregister-ScheduledTask -TaskName dailyreboot -Confirm: $false