about_Scheduled_Jobs
Se aplica a: Windows PowerShell 3.0
TEMA
about_Scheduled_Jobs
DESCRIPCIÓN BREVE
Describe los trabajos programados y explica cómo usarlos y administrarlos en Windows PowerShell® y en el Programador de tareas.
DESCRIPCIÓN LARGA
Los trabajos programados de Windows PowerShell consisten en una mezcla muy práctica de trabajos en segundo plano de Windows PowerShell y tareas del Programador de tareas.
Como sucede con los trabajos en segundo plano de Windows PowerShell, los trabajos programados se ejecutan de forma asincrónica en segundo plano. Las instancias de los trabajos programados que se han ejecutado pueden administrarse mediante los cmdlets de trabajo, como Start-Job, Get-Job, Stop-Job y Receive-Job.
Al igual que las tareas del Programador de tareas, los trabajos programados se guardan en el disco. Puede ver y administrar los trabajos en el Programador de tareas, habilitarlos y deshabilitarlos según sea necesario, ejecutarlos o usarlos como plantillas, establecer programaciones únicas o recurrentes para iniciar los trabajos o establecer condiciones en las que iniciarlos.
Además, los resultados de las instancias de trabajos programados se guardan en el disco en un formato fácilmente accesible, lo que ofrece un registro de ejecución de los resultados de los trabajos. Los trabajos programados vienen con un conjunto personalizado de cmdlets para administrarlos. Los cmdlets permiten crear, editar, administrar, deshabilitar y volver a habilitar trabajos programados, desencadenadores de trabajos y opciones de trabajos.
Este conjunto de herramientas integral y flexible convierte los trabajos programados en un componente esencial de muchas soluciones de TI de Windows PowerShell profesionales.
Los cmdlets de trabajos programados se incluyen en el módulo PSScheduledJob que se instala con Windows PowerShell. Este módulo se introdujo en Windows PowerShell 3.0 y funciona en Windows PowerShell 3.0 y versiones posteriores de Windows PowerShell.
Para más información sobre los trabajos en segundo plano de Windows PowerShell, consulte About_Jobs (https://go.microsoft.com/fwlink/?LinkID=113251).
Para más información sobre el Programador de tareas, consulte "Programador de tareas" en la biblioteca de TechNet en https://go.microsoft.com/fwlink/?LinkId=232928.
NOTA: Puede ver y administrar los trabajos programados de Windows PowerShell en el Programador de tareas, pero los cmdlets de Scheduled Job y trabajos de Windows PowerShell solo funcionan con los trabajos programados que se crean en Windows PowerShell.
CMDLETS DE TRABAJOS PROGRAMADOS
El módulo PSScheduledJob contiene los siguientes cmdlets.
Register-ScheduledJob: Creates a scheduled job.
Get-ScheduledJob: Gets a scheduled job.
Set-ScheduledJob: Changes the properties of a scheduled job
Disable-ScheduledJob: Temporarily disables a scheduled job.
Enable-ScheduledJob: Re-enables a scheduled job.
Unregister-ScheduledJob Deletes a scheduled job and its saved results.
New-JobTrigger: Creates a job trigger.
Get-JobTrigger: Gets a job trigger.
Add-JobTrigger: Adds a job trigger to a scheduled job.
Set-JobTrigger: Changes a job trigger.
Disable-JobTrigger: Temporarily disables a job trigger.
Enable-JobTrigger: Re-enables a job trigger.
Remove-JobTrigger: Deletes a job trigger.
New-ScheduledJobOption: Creates a job options object.
Get-ScheduledJobOption: Gets the job options of a scheduled job.
Set-ScheduledJobOption: Changes the job options of a scheduled job.
INICIO RÁPIDO
Los comandos siguientes crean un trabajo programado que se inicia cada día a las 3:00 a. m. y ejecuta el cmdlet Get-Process. El trabajo se inicia incluso si el equipo funciona con batería.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
El comando siguiente obtiene todos los trabajos programados en el equipo local.
PS C:\> Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
El comando siguiente obtiene los desencadenadores de trabajo de ProcessJob. Los parámetros de entrada especifican el trabajo programado, no el desencadenador, porque los desencadenadores se guardan en un trabajo programado.
PS C:\> Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
El siguiente comando utiliza el parámetro ContinueIfGoingOnBattery del cmdlet Set-ScheduledJob para cambiar la propiedad StopIfGoingOnBatteries de ProcessJob a False.
PS C:\> Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries : True
StopIfGoingOnBatteries : False
WakeToRun : True
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
El comando siguiente obtiene el trabajo programado de ProcessJob.
PS C:\> Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
El comando siguiente usa el cmdlet Get-Job para obtener todas las instancias del trabajo programado de ProcessJob que se han ejecutado hasta ahora. El cmdlet Get-Job obtiene los trabajos programados solo cuando se importa el módulo PSScheduledJob en la sesión actual.
SUGERENCIA: tenga en cuenta que usará los cmdlets de ScheduledJob para administrar los trabajos programados, pero utilizará los cmdlets de Job para administrar las instancias de los trabajos programados.
PS C:\> Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
El comando siguiente obtiene los resultados de la instancia más reciente del trabajo programado de ProcessJob (ID = 51).
Receive-Job -ID 51
Aunque el comando Receive-Job no incluía el parámetro Keep, los resultados del trabajo se guardan en disco hasta que se eliminen o se supere el número máximo de resultados.
Los resultados del trabajo ya no están disponibles en esta sesión, pero si inicia una nueva sesión o abre una nueva ventana de Windows PowerShell, los resultados del trabajo volverán a estar disponibles.
El comando siguiente usa el parámetro DefinitionName del cmdlet Start-Job para iniciar el trabajo programado ProcessJob.
Los trabajos que se inician mediante el cmdlet Start-Job son trabajos en segundo plano estándar de Windows PowerShell, y no instancias de la tarea programada. Al igual que todos los trabajos en segundo plano, estos trabajos se inician inmediatamente (no dependen de las opciones de trabajo ni se ven afectados por los desencadenadores de trabajo) y la salida no se guarda en el directorio Output del directorio de trabajo programado.
PS C:\>Start-Job -DefinitionName ProcessJob
El comando siguiente elimina el trabajo programado de ProcessJob y todos los resultados de sus instancias de trabajo.
PS C:\> Remove-ScheduledJob ProcessJob
CONCEPTOS DE TRABAJOS PROGRAMADOS
Un "trabajo programado" ejecuta comandos o un script. Un trabajo programado puede incluir "desencadenadores de trabajo", después iniciar el trabajo y "opciones de trabajo" que establezcan condiciones para ejecutarlo.
Un "desencadenador de trabajo" inicia automáticamente un trabajo programado. Un desencadenador de trabajo puede incluir una programación puntual o periódica, o especificar un evento, como cuando un usuario inicia sesión o Windows se inicia. Un trabajo programado puede tener uno o varios desencadenadores de trabajo y puede crear, agregar, habilitar, deshabilitar y obtener desencadenadores de trabajo.
Los desencadenadores de trabajo son opcionales. También puede iniciar trabajos programados inmediatamente con el cmdlet Start-Job o agregando el parámetro RunNow al comando Register-ScheduledJob.
Las "opciones de trabajo" establecen las condiciones para ejecutar un trabajo programado. Cada trabajo programado tiene un objeto de opciones de trabajo. Puede crear y editar objetos de opciones de trabajo y agregarlos a uno o varios trabajos programados.
Cada vez que se inicia un trabajo programado, se crea una "instancia de trabajo". Utilice los cmdlets Job de Windows PowerShell para ver y administrar la instancia del trabajo.
Los trabajos programados se guardan en el disco (de ahí que el verbo del cmdlet sea Register, en lugar de New) en archivos XML en el directorio $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs del equipo local.
Windows PowerShell crea un directorio para cada trabajo programado y guarda los comandos de trabajo, los desencadenadores de trabajo, las opciones de trabajo y los resultados del trabajo en el directorio de trabajo programado. Los desencadenadores de trabajo y las opciones de trabajo no se guardan por separado en el disco. Se guardan en el XML de trabajo programado de cada trabajo programado con el que están asociados.
Los trabajos programados, los desencadenadores de trabajo y las opciones de trabajo aparecen en Windows PowerShell como objetos. Los objetos se entrelazan, lo que hace que sea fácil detectarlos y usarlos en scripts y comandos.
Los trabajos programados aparecen como objetos ScheduledJobDefinition. El objeto ScheduledJobDefinition tiene una propiedad JobTriggers que contiene los desencadenadores de trabajo del trabajo programado y una propiedad Options que contiene las opciones del trabajo. Los objetos ScheduledJobTriggers y ScheduledJobOptions que representan, respectivamente, desencadenadores de trabajo y opciones de trabajo, tienen cada uno una propiedad JobDefinition que contiene el trabajo programado con el que están asociados. Esta interconexión recursiva hace que sea más fácil encontrar los desencadenadores y las opciones de un trabajo programado y buscar, hacer un script y mostrar el trabajo programado con el que están asociados un desencadenador de trabajo o una opción de trabajo.
VEA TAMBIÉN
about_Scheduled_Jobs_Basics
about_Scheduled_Jobs_Advanced
about_Scheduled_Jobs_Troubleshooting
about_jobs
Programador de tareas (https://go.microsoft.com/fwlink/?LinkId=232928)
Add-JobTrigger
Disable-JobTrigger
Disable-ScheduledJob
Enable-JobTrigger
Enable-ScheduledJob
Get-Job
Get-JobTrigger
Get-ScheduledJob
Get-ScheduledJobOption
New-JobTrigger
New-ScheduledJobOption
Receive-Job
Register-ScheduledJob
Remove-JobTrigger
Set-JobTrigger
Set-ScheduledJob
Set-ScheduledJobOption
Start-Job
Unregister-ScheduledJob