Búsqueda de sitios web

Tarea programada de PowerShell | ¿Cómo crear una tarea programada de PowerShell?


Introducción a la tarea programada de PowerShell

Las tareas programadas no son más que operaciones que se ejecutan automáticamente para realizar alguna actividad de forma regular sin intervención manual. La actividad puede ser cualquier cosa, desde reiniciar un sistema, ejecutar un comando por lotes o ejecutar un script de PowerShell. Las tareas comunes y monótonas son aquellas que se actualizan o se logran mediante una tarea programada. Esto ayuda a reducir las horas de trabajo invertidas. La tarea programada se puede ejecutar cada hora, día o semanalmente, según las necesidades del usuario. Este artículo cubrirá en detalle cómo se puede crear una tarea programada para ejecutar un script de PowerShell a través de un programador de tareas y de PowerShell.

Diferentes comandos para crear una tarea programada a través de PowerShell

Los siguientes son los cmdlets necesarios para crear una tarea programada a través de PowerShell:

  • New-ScheduledTask
  • Nueva acción de tarea programada
  • Nueva tarea programada
  • Nuevo conjunto de configuraciones de tareas programadas
  • Register-ScheduledTask

Veamos en detalle cada uno de los cmdlets mencionados anteriormente.

1. Nueva tarea programada

Este cmdlet crea una nueva instancia de trabajo de tarea programada.

Sintaxis:

NAME
New-ScheduledTask
SYNTAX
New-ScheduledTask [[-Action] <CimInstance#MSFT_TaskAction[]>] [[-Trigger] <CimInstance#MSFT_TaskTrigger[]>] [[-Settings] <CimInstance#MSFT_TaskSettings>] [[-Principal]
<CimInstance#MSFT_TaskPrincipal>] [[-Description] <string>] [-CimSession <CimSession[]>] [-ThrottleLimit <int>] [-AsJob]  [<CommonParameters>]
ALIASES
None

Parámetros:

  • Acción: Denota la acción que debe realizar la tarea. Pueden ser varias acciones; en caso de que se especifiquen varias acciones, se ejecutan de forma secuencial. El número máximo de acciones especificadas es 32. Su tipo es CimInstance[]. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • AsJob: Esto indica la tarea que se ejecutará como trabajo en segundo plano. Su tipo es el interruptor. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • CimSession: Esto ejecuta el trabajo en una computadora remota. Su tipo es CimSession[] y su alias es sesión. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • Descripción: indica la definición básica de la tarea. Su tipo es una cadena y el valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • Principal: indica la cuenta de usuario que debe utilizar la tarea. Su tipo es CimInstance. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • Activador: Esto indica el desencadenante que iniciará la tarea programada. El desencadenante puede estar basado en tiempo o en eventos. Una tarea puede tener un máximo de 48 activadores. Su tipo es CimInstance[]. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.

Ejemplo:

$Tasktest = New-ScheduledTask -Action $testAction -Trigger $testTrigger -Settings $testSettings

2. Nueva acción de tarea programada

Este cmdlet se utiliza para crear la acción de una tarea programada.

Sintaxis:

NAME
New-ScheduledTaskAction
SYNTAX
New-ScheduledTaskAction [-Execute] <string> [[-Argument] <string>] [[-WorkingDirectory] <string>] [-Id <string>] [-CimSession <CimSession[]>] [-ThrottleLimit <int>]
[-AsJob]  [<CommonParameters>]
ALIASES
None

Parámetros:

  • Argumento: Especifica la lista de argumentos que se pasarán. Su tipo es una cadena. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • AsJob: Esto indica la tarea que se ejecutará como trabajo en segundo plano. Su tipo es un interruptor. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • Ejecutar: Denota la ruta del archivo a ejecutar. Su tipo es una cadena. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • Id.: Denota el ID de la acción y se utiliza para iniciar sesión. Su tipo es una cadena. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • WorkingDirectory: Denota el directorio en el que se ejecutará el programador de tareas. La ubicación predeterminada es el directorio %windir%\system32. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.

Ejemplo:

New-ScheduledTaskAction -Execute "Notepad.exe"

3. Activador de nueva tarea programada

Esto crea un desencadenante para la tarea programada. El desencadenante puede estar basado en tiempo o en eventos.

Sintaxis:

NAME
New-ScheduledTaskTrigger
SYNTAX
New-ScheduledTaskTrigger [-Once] -At <datetime> [-RandomDelay <timespan>] [-RepetitionDuration <timespan>] [-RepetitionInterval <timespan>] [-CimSession
<CimSession[]>] [-ThrottleLimit <int>] [-AsJob]  [<CommonParameters>]
New-ScheduledTaskTrigger [-Daily] -At <datetime> [-DaysInterval <uint32>] [-RandomDelay <timespan>] [-CimSession <CimSession[]>] [-ThrottleLimit <int>] [-AsJob]
[<CommonParameters>]
New-ScheduledTaskTrigger [-Weekly] -At <datetime> [-RandomDelay <timespan>] [-DaysOfWeek {Sunday | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday}]
[-WeeksInterval <uint32>] [-CimSession <CimSession[]>] [-ThrottleLimit <int>] [-AsJob]  [<CommonParameters>]
New-ScheduledTaskTrigger [-AtStartup] [-RandomDelay <timespan>] [-CimSession <CimSession[]>] [-ThrottleLimit <int>] [-AsJob]  [<CommonParameters>]
New-ScheduledTaskTrigger [-AtLogOn] [-RandomDelay <timespan>] [-User <string>] [-CimSession <CimSession[]>] [-ThrottleLimit <int>] [-AsJob]  [<CommonParameters>]
ALIASES
None

Parámetros:

  • A las: Especifica la fecha u hora en la que se debe activar la tarea. Su tipo es DateTime. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • AtLogOn: Denota el disparador que se inicia cuando un usuario inicia sesión. Su tipo es el parámetro de cambio. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • Diario: Denota que la tarea debe ejecutarse diariamente. Su tipo es el parámetro de cambio. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.
  • Semanal: Indica que la tarea debe ejecutarse semanalmente. Su tipo es un parámetro de cambio. El valor predeterminado es ninguno. No acepta entradas de canalización ni caracteres comodín.

Ejemplo:

$Sta = New-ScheduledTaskAction -Execute "Notepad"
$Stestjob = New-ScheduledTaskTrigger -Weekly -At 3 am

4. Nuevo conjunto de configuraciones de tareas programadas

Contiene la configuración de la tarea programada. Este objeto se utiliza para modificar la configuración y gestionar el comportamiento de la tarea.

Sintaxis:

NAME
New-ScheduledTaskSettingsSet
SYNTAX
New-ScheduledTaskSettingsSet [-DisallowDemandStart] [-DisallowHardTerminate] [-Compatibility {At | V1 | Vista | Win7 | Win8}] [-DeleteExpiredTaskAfter <timespan>]
[-AllowStartIfOnBatteries] [-Disable] [-MaintenanceExclusive] [-Hidden] [-RunOnlyIfIdle] [-IdleWaitTimeout <timespan>] [-NetworkId <string>] [-NetworkName <string>]
[-DisallowStartOnRemoteAppSession] [-MaintenancePeriod <timespan>] [-MaintenanceDeadline <timespan>] [-StartWhenAvailable] [-DontStopIfGoingOnBatteries] [-WakeToRun]
[-IdleDuration <timespan>] [-RestartOnIdle] [-DontStopOnIdleEnd] [-ExecutionTimeLimit <timespan>] [-MultipleInstances {Parallel | Queue | IgnoreNew}] [-Priority <int>]
[-RestartCount <int>] [-RestartInterval <timespan>] [-RunOnlyIfNetworkAvailable] [-CimSession <CimSession[]>] [-ThrottleLimit <int>] [-AsJob]  [<CommonParameters>]
ALIASES
None

Ejemplo:

$Statest = New-ScheduledTaskAction -Execute "Notepad"
$STSettest = New-ScheduledTaskSettingsSet -Priority 7

5. Tarea programada de registro

Esto se utiliza para registrar la tarea programada. Los siguientes tipos de aplicaciones se pueden ejecutar utilizando el script. Aplicaciones Windows, aplicaciones DOS, archivos por lotes y cmd.

Ejemplo:

Register-ScheduledTask -TaskName "test task" -Trigger $testTime -User $trestUser -Action $testPS

Script de muestra para crear una tarea

Creemos una tarea con la ayuda de un código de muestra:

Código:

Write-Host "Task Scheduler Creation"
Write-Host "Specifying the action"
$testAction = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument "-File 'C:\test.ps1'"
Write-Host "Setting the trigger"
$testTrigger = New-ScheduledTaskTrigger -Daily -At 4am
$testSettings = New-ScheduledTaskSettingsSet
Write-Host "Creating the task"
$testTask = New-ScheduledTask -Action $testAction -Trigger $testTrigger -Settings $testSettings
Write-Host "registering the task"
Register-ScheduledTask -TaskName 'Dummy TS' -InputObject $Task -User 'vignesh' -Password 'pass@123'
Write-Host "Task Created"

Salida:

Ejecutar un script a través del Programador de tareas

1. Abra el programador de tareas buscando en Windows y seleccione crear una tarea básica. Dale un nombre a la tarea y selecciona Aceptar.

2. Establece los desencadenantes, puede ser semanal, diario o mensual.

3. Seleccione el archivo que se ejecutará en la pestaña de acciones.

4. Pase los argumentos, si los hay, que sean necesarios para el script en la pestaña Argumento establecido.

5. Guarde la tarea

6. La tarea estará disponible en la biblioteca del programador de tareas.

Conclusión

Por lo tanto, el artículo cubrió en detalle cómo se puede crear y configurar una tarea programada en PowerShell. Explicó en detalle los distintos cmdlets que intervienen en la creación de la tarea, su sintaxis y los parámetros respectivos junto con ejemplos adecuados. También cubrió cómo se puede crear una tarea directamente en el programador de tareas. La mejor manera de aprender más será crear un programador de tareas siguiendo los pasos mencionados anteriormente y explorando por nuestra cuenta.

Artículos relacionados