Compartir a través de


Set-ScheduledJob

Cambia los trabajos programados.

Sintaxis

Set-ScheduledJob
   [-Name <String>]
   [-ScriptBlock <ScriptBlock>]
   [-Trigger <ScheduledJobTrigger[]>]
   [-InitializationScript <ScriptBlock>]
   [-RunAs32]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-ScheduledJobOption <ScheduledJobOptions>]
   [-InputObject] <ScheduledJobDefinition>
   [-MaxResultCount <Int32>]
   [-PassThru]
   [-ArgumentList <Object[]>]
   [-RunNow]
   [-RunEvery <TimeSpan>]
   [<CommonParameters>]
Set-ScheduledJob
   [-Name <String>]
   [-FilePath <String>]
   [-Trigger <ScheduledJobTrigger[]>]
   [-InitializationScript <ScriptBlock>]
   [-RunAs32]
   [-Credential <PSCredential>]
   [-Authentication <AuthenticationMechanism>]
   [-ScheduledJobOption <ScheduledJobOptions>]
   [-InputObject] <ScheduledJobDefinition>
   [-MaxResultCount <Int32>]
   [-PassThru]
   [-ArgumentList <Object[]>]
   [-RunNow]
   [-RunEvery <TimeSpan>]
   [<CommonParameters>]
Set-ScheduledJob
   [-InputObject] <ScheduledJobDefinition>
   [-ClearExecutionHistory]
   [-PassThru]
   [<CommonParameters>]

Description

El cmdlet Set-ScheduledJob cambia las propiedades de los trabajos programados, como los comandos que ejecutan los trabajos o las credenciales necesarias para ejecutar el trabajo. También puede usarlo para borrar el historial de ejecución del trabajo programado.

Para usar este cmdlet, empiece por usar el cmdlet Get-ScheduledJob para obtener el trabajo programado. A continuación, canalice el trabajo programado para Set-ScheduledJob o guarde el trabajo en una variable y use el parámetro InputObject para identificar el trabajo. Use los parámetros restantes de Set-ScheduledJob para cambiar las propiedades del trabajo o borrar el historial de ejecución.

Aunque puede usar Set-ScheduledJob para cambiar los desencadenadores y opciones de un trabajo programado, los cmdlets Add-JobTrigger, Set-JobTrigger y Set-ScheduledJobOption proporcionan formas mucho más fáciles de realizar esas tareas. Para crear un nuevo trabajo programado, use el cmdlet Register-ScheduledJob.

El parámetro Trigger de Set-ScheduledJob agrega uno o varios desencadenadores de trabajo que inician el trabajo. El parámetro Trigger es opcional, por lo que puede agregar desencadenadores al crear el trabajo programado, agregar desencadenadores de trabajo más adelante, agregar el parámetro RunNow para iniciar el trabajo inmediatamente, usar el cmdlet Start-Job para iniciar el trabajo inmediatamente en cualquier momento o guardar el trabajo programado no registrado como plantilla para otros trabajos.

Set-ScheduledJob es una de las colecciones de cmdlets de programación de trabajos en el 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 el script que ejecuta un trabajo

PS C:\> Get-ScheduledJob -Name "Inventory"
Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-Inventory.ps1             True

The second command uses the Get-ScheduledJob cmdlet to get the Inventory scheduled job. A pipeline operator (|) sends the scheduled job to the **Set-ScheduledJob** cmdlet. The **Set-ScheduledJob** cmdlet uses the *Script* parameter to specify a new script, Get-FullInventory.ps1. The command uses the *Passthru* parameter to return the scheduled job after the change.
PS C:\> Get-ScheduledJob -Name "Inventory" | Set-ScheduledJob -FilePath "C:\Scripts\Get-FullInventory.ps1" -Passthru
Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-FullInventory.ps1         True

En este ejemplo se muestra cómo cambiar el script que se ejecuta en un trabajo programado.

El primer comando usa el cmdlet Get-ScheduledJob para obtener el trabajo programado inventory. La salida muestra que el trabajo ejecuta el script Get-Inventory.ps1.

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

Ejemplo 2: Eliminación del historial de ejecución de un trabajo programado

PS C:\> Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory

Este comando elimina el historial de ejecución actual y los resultados del trabajo guardado para el trabajo programado BackupArchive.

El comando usa el cmdlet Get-ScheduledJob para obtener el trabajo programado BackupArchive. Un operador de canalización (|) envía el trabajo al cmdlet Set-ScheduledJob para cambiarlo. El cmdlet Set-ScheduledJob usa el parámetro ClearExecutionHistory para eliminar el historial de ejecución y los resultados guardados.

Para obtener más información sobre el historial de ejecución y los resultados de trabajos guardados de los trabajos programados, consulte about_Scheduled_Jobs.

Ejemplo 3: Cambiar trabajos programados en un equipo remoto

PS C:\> Invoke-Command -Computer "Server01, Server02" -ScriptBlock {Get-ScheduledJob | Set-ScheduledJob -InitializationScript \\SrvA\Scripts\SetForRun.ps1}

Este comando cambia el script de inicialización en todos los trabajos programados en los equipos Server01 y Server02.

El comando usa el cmdlet Invoke-Command para ejecutar un comando en los equipos Server01 y Server02.

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 Set-ScheduledJob, que cambia el script de inicialización a SetForRun.ps1.

Parámetros

-ArgumentList

Especifica valores para los parámetros del script especificados por el parámetro FilePath o para el comando especificado por el parámetro ScriptBlock.

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

-Authentication

Especifica el mecanismo que se usa para autenticar las credenciales del usuario. Los valores aceptables para este parámetro son:

  • Predeterminado
  • Básico
  • Credssp
  • Digerir
  • Kerberos
  • Negociar
  • NegotiateWithImplicitCredential

El valor predeterminado es Default. Para obtener más información sobre los valores de este parámetro, vea AuthenticationMechanism Enumeration en MSDN Library.

Precaución: La autenticación del proveedor de soporte técnico de seguridad de credenciales (CredSSP), en la que las credenciales del usuario se pasan a un equipo remoto que se va a autenticar, está diseñada para comandos que requieren autenticación en más de un recurso, como el acceso a un recurso compartido de red remoto. Este mecanismo aumenta el riesgo de seguridad de la operación remota. Si el equipo remoto está en peligro, se pueden usar las credenciales que se pasan a ella para controlar la sesión de red.

Tipo:AuthenticationMechanism
Valores aceptados:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Posición:Named
Valor predeterminado:Default
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-ClearExecutionHistory

Elimina el historial de ejecución actual y los resultados guardados del trabajo programado.

El historial de ejecución del trabajo y los resultados del trabajo se guardan con el trabajo programado en el directorio $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs en el equipo en el que se crea el trabajo. Para ver el historial de ejecución, use el cmdlet Get-Job. Para obtener los resultados del trabajo, use el cmdlet Receive-Job.

Este parámetro no afecta a los eventos que el Programador de tareas escribe en los registros de eventos de Windows y no impide que Windows PowerShell guarde los resultados del trabajo. Para administrar el número de resultados del trabajo que se guardan, use el parámetro MaxResultCount.

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

-Credential

Especifica una cuenta de usuario que tiene permiso para ejecutar el trabajo programado. El valor predeterminado es el usuario actual.

Escriba un nombre de usuario, como User01 o Domain01\User01, o escriba un objeto de PSCredential, como uno del cmdlet Get-Credential. Si escribe solo un nombre de usuario, se le pedirá una contraseña.

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

-FilePath

Especifica un script que se ejecuta el trabajo programado. Escriba la ruta de acceso a un archivo .ps1 en el equipo local. Para especificar valores predeterminados para los parámetros de script, use el parámetro ArgumentList. Cada trabajo programado debe tener un scriptBlock de o valor FilePath.

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

-InitializationScript

Especifica la ruta de acceso completa a un script de Windows PowerShell (.ps1). El script de inicialización se ejecuta en la sesión que se crea para el trabajo en segundo plano antes de los comandos especificados por el parámetro ScriptBlock o el script especificado por el parámetro FilePath. Puede usar el script de inicialización para configurar la sesión, como agregar archivos, funciones o alias, crear directorios o comprobar si hay requisitos previos.

Para especificar un script que ejecute los comandos de trabajo principal, use el parámetro FilePath.

Si el script de inicialización genera un error, incluido un error de no terminación, la instancia actual del trabajo programado no se ejecuta y su estado es Error.

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

-InputObject

Especifica el trabajo programado que se va a cambiar. Escriba una variable que contenga objetos ScheduledJobDefinition o escriba un comando o expresión que obtenga objetos ScheduledJobDefinition, como un comando Get-ScheduledJob. También puede canalizar un objeto de ScheduledJobDefinition a Set-ScheduledJob.

Si especifica varios trabajos programados, Set-ScheduledJob realiza los mismos cambios en todos los trabajos.

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

-MaxResultCount

Especifica cuántas entradas de resultado del trabajo se mantienen para el trabajo programado. El valor predeterminado es 32.

Windows PowerShell guarda el historial de ejecución y los resultados de cada instancia desencadenada del trabajo programado en el disco. El valor de este parámetro determina el número de resultados de la instancia de trabajo que se guardan para este trabajo programado. Cuando el número de resultados de la instancia de trabajo supera este valor, Windows PowerShell elimina los resultados de la instancia de trabajo más antigua para dar espacio a los resultados de la instancia de trabajo más reciente.

El historial de ejecución del trabajo y los resultados del trabajo se guardan en el $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> directorios del equipo en el que se crea el trabajo. Para ver el historial de ejecución, use el cmdlet Get-Job. Para obtener los resultados del trabajo, use el cmdlet Receive-Job.

El parámetro MaxResultCount establece el valor de la propiedad ExecutionHistoryLength del trabajo programado.

Para eliminar el historial de ejecución actual y los resultados del trabajo, use el parámetro ClearExecutionHistory.

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

-Name

Especifica un nuevo nombre para el trabajo programado y las instancias del trabajo programado. El nombre debe ser único en el equipo local.

Para identificar el trabajo programado que se va a cambiar, use el parámetro InputObject o canalice un trabajo programado de Get-ScheduledJob a Set-ScheduledJob.

Este parámetro no cambia los nombres de las instancias de trabajo en el disco. Solo afecta a las instancias de trabajo que se inician una vez completado este comando.

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

-PassThru

Devuelve un objeto que representa el elemento con el que está trabajando. 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

-RunAs32

Ejecuta el trabajo programado en un proceso de 32 bits.

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

-RunEvery

Se usa para especificar la frecuencia con la que ejecutar el trabajo. Por ejemplo, use esta opción para ejecutar un trabajo cada 15 minutos.

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

-RunNow

Inicia un trabajo inmediatamente, en cuanto se ejecuta el cmdlet set-ScheduledJob . Este parámetro elimina la necesidad de desencadenar el Programador de tareas para ejecutar un script de Windows PowerShell inmediatamente después del registro y no requiere que los usuarios creen un desencadenador que especifique una fecha y hora de inicio.

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

-ScheduledJobOption

Establece las opciones del trabajo programado. Escriba un objeto ScheduledJobOptions, como uno que cree mediante el cmdlet New-ScheduledJobOption o un valor de tabla hash.

Puede establecer opciones para un trabajo programado al registrar el trabajo programado o usar el Set-ScheduledJobOption o cmdlets Set-ScheduledJob para establecer o cambiar opciones.

Muchas de las opciones y sus valores predeterminados determinan si y cuándo se ejecuta un trabajo programado. Asegúrese de revisar estas opciones antes de programar un trabajo. Para obtener una descripción de las opciones de trabajo programadas, incluidos los valores predeterminados, consulte New-ScheduledJobOption.

Para enviar una tabla hash, use las siguientes claves. En la tabla hash siguiente, las claves se muestran con sus valores predeterminados.

@{# Power SettingsStartIfOnBattery=$False;StopIfGoingOnBattery=$True; WakeToRun=$False; # Idle SettingsStartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False;# Security settingsShowInTaskScheduler=$TrueRunElevated=$False;# MiscRunWithoutNetwork=$False;DoNotAllowDemandStart=$False;MultipleInstancePolicy=IgnoreNew# Can be IgnoreNew, Parallel, Queue, StopExisting}

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

-ScriptBlock

Especifica los comandos que ejecuta el trabajo programado. Incluya los comandos entre llaves ( { } ) para crear un bloque de script. Para especificar valores predeterminados para los parámetros de comando, use el parámetro ArgumentList.

Cada comando de Register-ScheduledJob debe usar los parámetros ScriptBlock o FilePath.

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

-Trigger

Especifica los desencadenadores para el trabajo programado. Escriba uno o varios objetos ScheduledJobTrigger, como los objetos que devuelve el cmdlet New-JobTrigger o una tabla hash de claves y valores del desencadenador de trabajos.

Un desencadenador de trabajo inicia un trabajo programado automáticamente en una programación única o periódica o cuando se produce un evento.

Los desencadenadores de trabajo son opcionales. Puede agregar un desencadenador al crear el trabajo programado, usar el Add-JobTrigger o cmdlets set-ScheduledJob para agregar desencadenadores más adelante o usar el cmdlet Start-Job para iniciar el trabajo programado inmediatamente. También puede crear y mantener un trabajo programado que no tenga desencadenadores de trabajo.

Para enviar una tabla hash, use las siguientes claves.

@{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am" (o cualquier cadena de tiempo válida); DaysOfWeek="Monday", "Wednesday" (o cualquier combinación de nombres de día); Interval=2 (o cualquier intervalo de frecuencia válido); RandomDelay="30minutes" (o cualquier cadena de intervalo de tiempo válida); User="Domain1\User01" (o cualquier usuario válido; solo se usa con el valor de frecuencia AtLogon)

}

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

Entradas

ScheduledJobDefinition

Puede canalizar trabajos programados a Set-ScheduledJob.

Salidas

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Si usa el parámetro Passthru, Set-ScheduledJob devuelve el trabajo programado que se cambió. De lo contrario, este cmdlet no genera ninguna salida.