about_Scheduled_Jobs

Descripción breve

Describe los trabajos programados y explica cómo usar y administrar trabajos programados en PowerShell y en Programador de tareas.

Descripción larga

Los trabajos programados de PowerShell son un híbrido útil de trabajos en segundo plano de PowerShell Programador de tareas tareas.

Al igual que los trabajos en segundo plano de PowerShell, los trabajos programados se ejecutan de forma asincrónica en segundo plano. Las instancias de trabajos programados que se han ejecutado se pueden administrar mediante los cmdlets de trabajo, como Start-Job , Get-Job , y Stop-Job Receive-Job .

Al igual Programador de tareas tareas, los trabajos programados se guardan en el disco. Puede ver y administrar los trabajos en Programador de tareas, habilitarlos y deshabilitarlos según sea necesario, ejecutarlos o usarlos como plantillas, establecer una programación única o periódica para iniciar los trabajos o establecer las condiciones en las que se inician los trabajos.

Además, los resultados de las instancias de trabajo programadas se guardan en el disco en un formato de fácil acceso, lo que proporciona un registro en ejecución de la salida del trabajo. Los trabajos programados incluyen un conjunto personalizado de cmdlets para administrarlos. Los cmdlets permiten crear, editar, administrar, deshabilitar y volver a habilitar trabajos programados, desencadenadores de trabajo y opciones de trabajo.

Este conjunto completo y flexible de herramientas convierten los trabajos programados en un componente esencial de muchas soluciones de IT de PowerShell profesionales.

Los cmdlets de trabajo programado se incluyen en el módulo PSScheduledJob que se instala con PowerShell. Este módulo se introdujo en PowerShell 3.0 y funciona en PowerShell 3.0 y versiones posteriores de PowerShell. Para obtener más información sobre los cmdlets incluidos en el módulo PSScheduledJob, vea PSScheduledJob.

Para obtener más información sobre los trabajos en segundo plano de PowerShell, vea about_Jobs.

Para obtener más información sobre Programador de tareas, vea Programador de tareas.

Nota

Puede ver y administrar trabajos programados de PowerShell en Programador de tareas. Los trabajos de PowerShell y los cmdlets de trabajo programado solo funcionan en trabajos programados creados en PowerShell.

Inicio rápido

En este ejemplo se crea un trabajo programado que se inicia todos los días a las 3:00 a. m. y ejecuta el Get-Process cmdlet . El trabajo se inicia incluso si el equipo se ejecuta con baterías.

$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options

El Get-ScheduledJob cmdlet obtiene los trabajos programados en el equipo local.

Get-ScheduledJob
Id         Name            Triggers        Command            Enabled
--         ----            --------        -------            -------
7          ProcessJob      {1}             Get-Process        True

Get-JobTriggerobtiene 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.

Get-JobTrigger -Name ProcessJob
Id         Frequency       Time                   DaysOfWeek        Enabled
--         ---------       ----                   ----------        -------
1          Daily           11/5/2011 3:00:00 AM                     True

En este ejemplo se usa el parámetro ContinueIfGoingOnBattery del cmdlet para cambiar la propiedad Set-ScheduledJob StopIfGoingOnBatteries de ProcessJob a False.

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 Get-ScheduledJob cmdlet obtiene el trabajo programado ProcessJob.

Get-ScheduledJob ProcessJob
Id         Name            Triggers        Command        Enabled
--         ----            --------        -------        -------
7          ProcessJob      {1}             Get-Process    True

El cmdlet obtiene todas las instancias del trabajo programado Get-Job ProcessJob que se han ejecutado hasta ahora. El Get-Job cmdlet obtiene trabajos programados solo cuando el módulo PSScheduledJob se importa en la sesión actual.

Sugerencia

Tenga en cuenta que usa los cmdlets de trabajo programado para administrar los trabajos programados, pero usa los cmdlets de trabajo para administrar instancias de trabajos programados.

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 Receive-Job cmdlet obtiene los resultados de la instancia más reciente del trabajo programado ProcessJob (id. = 51).

Receive-Job -ID 51

Aunque el comando no incluye el parámetro Keep, los resultados del trabajo se guardan en el disco hasta que los elimine o se supere el número máximo Receive-Job 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 PowerShell, los resultados del trabajo estarán disponibles de nuevo.

El comando siguiente usa el parámetro DefinitionName del Start-Job cmdlet para iniciar el trabajo programado ProcessJob.

Los trabajos que se inician mediante el cmdlet son trabajos en segundo plano estándar de Start-Job PowerShell, no instancias del trabajo programado. Al igual que todos los trabajos en segundo plano, estos trabajos se inician inmediatamente, no están sujetos a opciones de trabajo o se ven afectados por desencadenadores de trabajo y su salida no se guarda en el directorio de salida del directorio de trabajo programado.

Start-Job -DefinitionName ProcessJob

El Unregister-ScheduledJob cmdlet elimina el trabajo programado ProcessJob y todos los resultados guardados de sus instancias de trabajo.

Unregister-ScheduledJob ProcessJob

Conceptos de trabajos programados

Un trabajo programado ejecuta comandos o un script. Un trabajo programado puede incluir desencadenadores de trabajo que inician el trabajo y opciones de trabajo que establecen condiciones para ejecutar el trabajo.

Un desencadenador de trabajo inicia automáticamente un trabajo programado. Un desencadenador de trabajo puede incluir una programación única o periódica o especificar un evento, como cuando un usuario inicia sesión o Windows inicio. 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. Puede iniciar los trabajos programados inmediatamente mediante , o agregando Start-Job cmdlet el parámetro RunNow al Register-ScheduledJob comando.

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. Use los cmdlets de trabajo de PowerShell para ver y administrar la instancia de trabajo.

Los trabajos programados se guardan en el disco y usan el verbo del cmdlet, Register , en lugar de New . Los archivos XML se encuentran en el equipo local en el directorio $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs .

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 del trabajo programado. Los desencadenadores de trabajo y las opciones de trabajo no se guardan en el disco de forma independiente. Se guardan en el XML del trabajo programado de cada trabajo programado al que están asociados.

Los trabajos programados, los desencadenadores de trabajo y las opciones de trabajo aparecen en PowerShell como objetos. Los objetos están intervinculados, lo que facilita su de descubrimiento y uso en comandos y scripts.

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 de trabajo. Los objetos ScheduledJobTriggers y ScheduledJobOptions que representan desencadenadores de trabajo y opciones de trabajo, respectivamente, tienen una propiedad JobDefinition que contiene el trabajo programado al que están asociados. Esta interconexión recursiva facilita la búsqueda de los desencadenadores y las opciones de un trabajo programado, así como la búsqueda, el script y la visualización del trabajo programado al que está asociada cualquier opción de trabajo o desencadenador de trabajo.

Consulte también

about_Scheduled_Jobs_Basics

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

Cmdlets del módulo PSScheduledJob

Programador de tareas