Compartir a través de


Set-JobTrigger

Cambia el desencadenador de trabajo de un trabajo programado.

Sintaxis

Set-JobTrigger
   [-InputObject] <ScheduledJobTrigger[]>
   [-DaysInterval <Int32>]
   [-WeeksInterval <Int32>]
   [-RandomDelay <TimeSpan>]
   [-At <DateTime>]
   [-User <String>]
   [-DaysOfWeek <DayOfWeek[]>]
   [-AtStartup]
   [-AtLogOn]
   [-Once]
   [-RepetitionInterval <TimeSpan>]
   [-RepetitionDuration <TimeSpan>]
   [-RepeatIndefinitely]
   [-Daily]
   [-Weekly]
   [-PassThru]
   [<CommonParameters>]

Description

El cmdlet Set-JobTrigger cambia las propiedades de los desencadenadores de trabajo de los trabajos programados. Puede usarlo para cambiar la hora o frecuencia en la que se inician o cambian los trabajos de una programación basada en tiempo a programaciones desencadenadas por un inicio de sesión o inicio.

Un desencadenador de trabajo define una programación o condiciones periódicas para iniciar un trabajo programado. Aunque los desencadenadores de trabajo no se guardan en el disco, puede cambiar los desencadenadores de trabajo de los trabajos programados, que se guardan en el disco.

Para cambiar un desencadenador de trabajo de un trabajo programado, empiece por usar el cmdlet Get-JobTrigger para obtener el desencadenador de trabajo de un trabajo programado. A continuación, canalice el desencadenador a Set-JobTrigger o guarde el desencadenador en una variable y use el parámetro InputObject de cmdlet Set-JobTrigger para identificar el desencadenador. Use los parámetros restantes de set-JobTrigger para cambiar el desencadenador de trabajo.

Al cambiar el tipo de desencadenador de trabajo, como cambiar un desencadenador de trabajo de un desencadenador diario o semanal a un desencadenador de atLogon, se eliminan las propiedades del desencadenador original. Sin embargo, si cambia los valores del desencadenador, pero no su tipo, como cambiar los días de un desencadenador semanal, solo se cambian las propiedades que especifique. Se conservan todas las demás propiedades del desencadenador de trabajo original.

Set-JobTrigger es una de las colecciones de cmdlets de programación de trabajos del módulo PSScheduledJob que se incluye en Windows PowerShell.

Para obtener más información sobre los trabajos programados, vea los temas Acerca de en el módulo PSScheduledJob. Importe el módulo PSScheduledJob y escriba: Get-Help about_Scheduled* o vea about_Scheduled_Jobs.

Este cmdlet se introdujo en Windows PowerShell 3.0.

Ejemplos

Ejemplo 1: Cambiar los días de un desencadenador de trabajo

PS C:\> Get-JobTrigger -Name "DeployPackage"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Weekly          9/29/2011 12:00:00 AM  {Wednesday, Saturday}   True

The second command uses the Get-JobTrigger cmdlet to get the job trigger of the DeployPackage scheduled job. A pipeline operator (|) sends the trigger to the **Set-JobTrigger** cmdlet, which changes the job trigger so that it starts the DeployPackage job on Wednesdays and Sundays. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> Get-JobTrigger -Name "DeployPackage" | Set-JobTrigger -DaysOfWeek "Wednesday", "Sunday" -Passthru
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Weekly          9/29/2011 12:00:00 AM  {Wednesday, Sunday}     True

En este ejemplo se muestra cómo cambiar los días de un desencadenador de trabajo semanal.

El primer comando usa el cmdlet Get-JobTrigger para obtener el desencadenador de trabajo del trabajo programado DeployPackage. La salida muestra que el desencadenador inicia el trabajo a medianoche los miércoles y sábados.

Este comando no es necesario; solo se incluye para mostrar el efecto del cambio del desencadenador.

Ejemplo 2: Cambiar el tipo de desencadenador de trabajo

PS C:\> Get-JobTrigger -Name "Inventory"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           9/27/2011 11:00:00 PM                          True
2          AtStartup                                                      True

The second command uses the **Get-JobTrigger** cmdlet to get the *AtStartup* job trigger of the Inventory job. The command uses the *TriggerID* parameter to identify the job trigger. A pipeline operator (|) sends the job trigger to the **Set-JobTrigger** cmdlet, which changes it to a weekly job trigger that runs every four weeks on Monday at midnight. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> Get-JobTrigger -Name "Inventory" -TriggerID 2 | Set-JobTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Monday -At "12:00 AM"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           9/27/2011 11:00:00 PM                          True
2          Weekly          10/31/2011 12:00:00 AM {Monday}                True

En este ejemplo se muestra cómo cambiar el tipo de desencadenador de trabajo que inicia un trabajo. Los comandos de este ejemplo reemplazan un desencadenador de trabajo AtStartup por un desencadenador semanal.

El primer comando usa el cmdlet Get-JobTrigger para obtener el desencadenador de trabajo del trabajo programado inventario. La salida muestra que el trabajo tiene dos desencadenadores un desencadenador diario y un desencadenador AtStartup.

Este comando no es necesario; solo se incluye para mostrar el efecto del cambio del desencadenador.

Ejemplo 3: Cambio del usuario en un desencadenador de trabajo remoto

PS C:\> Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-ScheduledJob | Get-JobTrigger | Where-Object {$_.User} | Set-JobTrigger -User "Domain01/Admin02"}

Este comando cambia al usuario en todas las AtLogon desencadenadores de trabajos programados en el equipo Server01.

El comando usa el cmdlet Invoke-Command para ejecutar un comando en el equipo Server01.

El comando remoto comienza con un comando Get-ScheduledJob que obtiene todos los trabajos programados en el equipo. Los trabajos programados se canalizan al cmdlet Get-JobTrigger, que obtiene los desencadenadores de trabajo de los trabajos programados. Cada desencadenador de trabajo contiene una propiedad JobDefinition que contiene el trabajo programado, por lo que el desencadenador permanece asociado al trabajo programado incluso cuando se cambia.

Los desencadenadores de trabajo se canalizan al cmdlet Where-Object, que obtiene desencadenadores de trabajo que tienen la propiedad User. Los desencadenadores de trabajo seleccionados se canalizan al cmdlet set-JobTrigger , que cambia el usuario a Domain01\Admin02.

Ejemplo 4: Cambiar uno de los muchos desencadenadores de trabajo

PS C:\> Get-JobTrigger -Name "SecurityCheck"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           4/24/2013 3:00:00 AM                           True
2          Weekly          4/24/2013 4:00:00 PM   {Sunday}                True
3          Once            4/24/2013 4:00:00 PM                           True

The second command uses the **TriggerID** parameter of the **Get-JobTrigger** cmdlet to get the *Once* trigger of the SecurityCheck scheduled job. The command pipes the trigger to the Format-List cmdlet, which displays all of the properties of the *Once* job trigger.The output shows that the trigger starts the job once every hour (RepetitionInterval = 1 hour) for one day (RepetitionDuration = 1 day).
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At                 : 4/24/2012 4:00:00 PM
DaysOfWeek         :
Interval           : 1
Frequency          : Once
RandomDelay        : 00:00:00
RepetitionInterval : 01:00:00
RepetitionDuration : 1.00:00:00
User               :
Id                 : 3
Enabled            : True
JobDefinition      : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

The third command changes the repetition interval of the job trigger from one hour to 90 minutes. The command does not return any output.
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerId 3 | Set-JobTrigger -RepetitionInterval (New-TimeSpan -Minutes 90)

The fourth command displays the effect of the change.The output shows that the trigger starts the job once every 90 minutes (RepetitionInterval = 1 hour, 30 minutes) for one day (RepetitionDuration = 1 day).
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At                 : 4/24/2012 4:00:00 PM
DaysOfWeek         :
Interval           : 1
Frequency          : Once
RandomDelay        : 00:00:00
RepetitionInterval : 01:30:00
RepetitionDuration : 1.00:00:00
User               :
Id                 : 3
Enabled            : True
JobDefinition      : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Los comandos de este ejemplo cambian el intervalo de repetición de la Una vez desencadenador de trabajo de SecurityCheck programado de cada 60 minutos a cada 90 minutos. El trabajo programado SecurityCheck tiene tres desencadenadores de trabajo, por lo que los comandos usan el parámetro TriggerId del cmdlet Get-JobTrigger para identificar el desencadenador de trabajo que se está cambiando.

El primer comando usa el cmdlet Get-JobTrigger para obtener todos los desencadenadores de trabajo del trabajo programado SecurityCheck. La salida, que muestra los identificadores de los desencadenadores de trabajo, revela que la una vez desencadenador de trabajo tiene un identificador de 3.

Parámetros

-At

Inicia el trabajo en la fecha y hora especificadas. Escriba un objeto DateTime, como el que devuelve el cmdlet Get-Date, o una cadena que se pueda convertir a una hora, como "19 de abril de 2012 15:00", "12/31/2013 9:00 PM" o "3am".

Si no especifica un elemento del objeto DateTime, como segundos, no se cambia ese elemento del desencadenador de trabajo. Si el desencadenador de trabajo original no incluía un objeto dateTime y omite un elemento, el desencadenador de trabajo se crea con el elemento correspondiente a partir de la fecha y hora actuales.

Al usar el parámetro Once, establezca el valor del parámetro At en una fecha y hora determinada. Dado que la fecha predeterminada de un dateTime objeto es la fecha actual, establecer una hora antes de la hora actual sin una fecha explícita da como resultado un desencadenador de trabajo durante una hora en el pasado.

objetos DateTime y cadenas que se convierten en objetos DateTime, se ajustan automáticamente para que sean compatibles con los formatos de fecha y hora seleccionados para el equipo local en Región y idioma en el Panel de control.

Tipo:DateTime
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-AtLogOn

Inicia el trabajo programado cuando los usuarios especificados inician sesión en el equipo. Para especificar un usuario, use el parámetro User.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-AtStartup

Inicia el trabajo programado cuando se inicia Windows.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Daily

Especifica una programación de trabajo diaria periódica. Use los demás parámetros del parámetro Daily establecido para especificar los detalles de la programación.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DaysInterval

Especifica el número de días entre repeticiones según una programación diaria. Por ejemplo, un valor de 3 inicia el trabajo programado en días 1, 4, 7, etc. El valor predeterminado es 1.

Tipo:Int32
Posición:Named
Valor predeterminado:1
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-DaysOfWeek

Especifica los días de la semana en los que se ejecuta un trabajo programado semanalmente. Escriba nombres de día, como lunes, jueves, enteros 0-6, donde 0 representa el domingo o un asterisco (*) para representar todos los días. Este parámetro es necesario en el conjunto de parámetros Weekly.

Los nombres de día se convierten en sus valores enteros en el desencadenador de trabajo. Al incluir nombres de día entre comillas en un comando, escriba cada nombre de día entre comillas independientes, como "Lunes", "Martes". Si incluye varios nombres de día en un único par de comillas, se sumarán los valores enteros correspondientes. Por ejemplo, "Lunes, Martes" (1, 2) da como resultado un valor de "miércoles" (3).

Tipo:DayOfWeek[]
Valores aceptados:Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-InputObject

Especifica los desencadenadores de trabajo. Escriba una variable que contenga objetos ScheduledJobTrigger o escriba un comando o expresión que obtenga objetos ScheduledJobTrigger, como un comando Get-JobTrigger. También puede canalizar un objeto de ScheduledJobTrigger a Set-JobTrigger.

Si especifica varios desencadenadores de trabajo, Set-JobTrigger realiza los mismos cambios en todos los desencadenadores de trabajo.

Tipo:ScheduledJobTrigger[]
Posición:0
Valor predeterminado:None
Requerido:True
Aceptar entrada de canalización:True
Aceptar caracteres comodín:False

-Once

Especifica una programación no periódica (una vez).

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-PassThru

Devuelve los desencadenadores de trabajo que han cambiado. De forma predeterminada, este cmdlet no genera ninguna salida.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-RandomDelay

Habilita un retraso aleatorio que comienza en la hora de inicio programada y establece el valor de retraso máximo. La longitud del retraso se establece pseudoaleatoriedad para cada inicio y varía de ningún retraso al tiempo especificado por el valor de este parámetro. El valor predeterminado, cero (00:00:00), deshabilita el retraso aleatorio.

Escriba un objeto timespan, como uno devuelto por el cmdlet New-TimeSpan, o escriba un valor en <horas>:<minutos>:<segundos> formato, que se convierte automáticamente en un objeto timespan.

Tipo:TimeSpan
Posición:Named
Valor predeterminado:00:00:00
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-RepeatIndefinitely

Este parámetro, disponible a partir de Windows PowerShell 4.0, elimina la necesidad de especificar un valor de TimeSpan.MaxValue para el parámetro RepetitionDuration para ejecutar un trabajo programado repetidamente durante un período indefinido.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-RepetitionDuration

Repite el trabajo hasta que expire el tiempo especificado. La frecuencia de repetición viene determinada por el valor del parámetro RepeticiónInterval. Por ejemplo, si el valor de De repeticiónInterval es de 5 minutos y el valor de RepeticiónDuración es de 2 horas, el trabajo se desencadena cada cinco minutos durante dos horas.

Escriba un objeto timespan, como el que devuelve el cmdlet New-TimeSpan o una cadena que se puede convertir en un objeto timespan, como "1:05:30".

Para ejecutar un trabajo indefinidamente, agregue el parámetro RepeatIndefinitely en su lugar.

Para detener un trabajo antes de que expire la duración de la repetición del desencadenador del trabajo, establezca el valor RepeticiónDuración en cero (0).

Para cambiar la duración de la repetición o el intervalo de repetición de un desencadenador de trabajo una vez, el comando debe incluir los parámetros RepetitionInterval y RepetitionDuration. Para cambiar la duración de repetición o los intervalos de repetición de otros tipos de desencadenadores de trabajo, el comando debe incluir los parámetros, En, RepeticiónInterval y RepeticiónDuración.

Tipo:TimeSpan
Posición:Named
Valor predeterminado:0
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-RepetitionInterval

Repite el trabajo en el intervalo de tiempo especificado. Por ejemplo, si el valor de este parámetro es de 2 horas, el trabajo se desencadena cada dos horas. El valor predeterminado, 0, no repite el trabajo.

Escriba un objeto timespan, como el que devuelve el cmdlet New-TimeSpan o una cadena que se puede convertir en un objeto timespan, como "1:05:30".

Para cambiar la duración de la repetición o el intervalo de repetición de un desencadenador de trabajo una vez, el comando debe incluir los parámetros RepetitionInterval y RepetitionDuration. Para cambiar la duración de repetición o los intervalos de repetición de otros tipos de desencadenadores de trabajo, el comando debe incluir los parámetros, En, RepeticiónInterval y RepeticiónDuración.

Tipo:TimeSpan
Posición:Named
Valor predeterminado:0
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-User

Especifica los usuarios que desencadenan un AtLogon inicio de un trabajo programado. Escriba el nombre de un usuario en <nombreDeUsuario> o <formato Dominio\Nombre de usuario> o escriba un asterisco (*) para representar a todos los usuarios. El valor predeterminado es todos los usuarios.

Tipo:String
Posición:Named
Valor predeterminado:All users
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Weekly

Especifica una programación de trabajo semanal periódica. Use los demás parámetros del parámetro Weekly establecido para especificar los detalles de la programación.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:False
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-WeeksInterval

Especifica el número de semanas entre repeticiones en una programación de trabajo semanal. Por ejemplo, un valor de 3 inicia el trabajo programado en las semanas 1, 4, 7, etc. El valor predeterminado es 1.

Tipo:Int32
Posición:Named
Valor predeterminado:1
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

Entradas

ScheduledJobTrigger

Puede canalizar varios desencadenadores de trabajo a Set-JobTrigger.

Salidas

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobTrigger

Al usar el parámetro Passthru, Set-JobTrigger devuelve los desencadenadores de trabajo que se cambiaron. De lo contrario, este cmdlet no genera ninguna salida.

Notas

  • Los desencadenadores de trabajo tienen una propiedad JobDefintion que las asocia al trabajo programado. Al cambiar el desencadenador de trabajo de un trabajo programado, se cambia el trabajo. No es necesario usar un comando Set-ScheduledJob para aplicar el desencadenador modificado al trabajo programado.