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_Troubleshooting
Cmdlets del módulo PSScheduledJob