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 Set-ScheduledJob cmdlet 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 Get-ScheduledJob cmdlet para obtener el trabajo programado. A continuación, canalice el trabajo programado a 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 las opciones de un trabajo programado, los Add-JobTriggercmdlets , Set-JobTriggery Set-ScheduledJobOption proporcionan formas mucho más fáciles de realizar esas tareas. Para crear un nuevo trabajo programado, use el Register-ScheduledJob cmdlet .

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 Start-Job cmdlet 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 una colección de cmdlets de programación de trabajos en el módulo PSScheduledJob que se incluye en Windows PowerShell.

Para 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

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

Get-ScheduledJob -Name "Inventory"

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

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

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

El segundo comando usa el Get-ScheduledJob cmdlet para obtener el trabajo programado inventory. Un operador de canalización (|) envía el trabajo programado al Set-ScheduledJob cmdlet . El Set-ScheduledJob cmdlet usa el parámetro Script para especificar un nuevo script, Get-FullInventory.ps1. El comando usa el parámetro PassThru para devolver el trabajo programado después del cambio.

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

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

En este ejemplo se elimina el historial de ejecución actual y se guardan los resultados del trabajo de un trabajo programado.

Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory

El comando usa el Get-ScheduledJob cmdlet para obtener el trabajo programado BackupArchive. Un operador de canalización (|) envía el trabajo al Set-ScheduledJob cmdlet para cambiarlo. El Set-ScheduledJob cmdlet 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

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

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

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

El comando remoto comienza con un Get-ScheduledJob comando que obtiene todos los trabajos programados en el equipo. Los trabajos programados se canalizan al Set-ScheduledJob cmdlet , que cambia el script de inicialización a SetForRun.ps1.

Parámetros

-ArgumentList

Especifica los valores de 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 utiliza para autenticar las credenciales del usuario. Los valores permitidos para este parámetro son los siguientes:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

El valor predeterminado es Default. Para obtener más información sobre los valores de este parámetro, consulte AuthenticationMechanism Enumeration en el SDK de PowerShell.

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 para autenticarse, 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 el riesgo de seguridad de la operación remota. Si el equipo remoto se ve comprometido, las credenciales que se pasen a él se pueden utilizar para controlar la sesión de red.

Tipo:AuthenticationMechanism
Valores aceptados:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Posición:Named
Valor predeterminado:None
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 $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs directorio del equipo en el que se crea el trabajo. Para ver el historial de ejecución, use el Get-Job cmdlet . Para obtener los resultados del trabajo, use el Receive-Job cmdlet .

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:None
Requerido:False
Aceptar entrada de canalización:False
Aceptar caracteres comodín:False

-Credential

Especifica una cuenta de usuario que tenga 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 PSCredential , como uno del Get-Credential cmdlet. Si escribe solo un nombre de usuario, se le solicitará una contraseña.

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

-FilePath

Especifica un script que 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 valor ScriptBlock o 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 los 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 Get-ScheduledJob comando. También puede canalizar un objeto 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 resultados de 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 dejar 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 en el equipo en el que se crea el trabajo. Para ver el historial de ejecución, use el Get-Job cmdlet . Para obtener los resultados del trabajo, use el Receive-Job cmdlet .

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:None
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. Afecta solo a instancias de trabajo que se inician cuando finalice 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 ningún resultado.

Tipo:SwitchParameter
Posición:Named
Valor predeterminado:None
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:None
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 Set-ScheduledJob cmdlet. 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 para un nuevo trabajo programado Escriba un objeto ScheduledJobOptions , como uno que cree mediante el New-ScheduledJobOption cmdlet o un valor de tabla hash.

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

Muchas de las opciones y sus valores predeterminados determinan si se ejecuta un trabajo programado y cuándo ocurre esto. 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, vea New-ScheduledJobOption.

Para enviar una tabla hash, use las claves siguientes. En la siguiente tabla hash, 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 Register-ScheduledJob comando 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 New-JobTrigger cmdlet o una tabla hash de claves y valores del desencadenador de trabajo.

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 los Add-JobTrigger cmdlets o Set-ScheduledJob para agregar desencadenadores más adelante o usar el Start-Job cmdlet 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 claves siguientes.

@{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 un trabajo programado a este cmdlet.

Salidas

None

De forma predeterminada, este cmdlet no devuelve ninguna salida.

ScheduledJobDefinition

Cuando se usa el parámetro PassThru , este cmdlet devuelve el trabajo programado que cambió.