Compartilhar via


Set-ScheduledJob

Altera trabalhos agendados.

Sintaxe

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

O Set-ScheduledJob cmdlet altera as propriedades dos trabalhos agendados, como os comandos que os trabalhos executam ou as credenciais necessárias para executar o trabalho. Você também pode usar isso para limpar o histórico de execução do trabalho agendado.

Para usar esse cmdlet, comece usando o Get-ScheduledJob cmdlet para obter o trabalho agendado. Em seguida, canalize o trabalho agendado ou Set-ScheduledJob salve-o em uma variável e use o parâmetro InputObject para identificar o trabalho. Use os parâmetros restantes de para alterar as propriedades do trabalho ou limpar o histórico de Set-ScheduledJob execução.

Embora você possa usar Set-ScheduledJob para alterar os gatilhos e as opções de um trabalho agendado, os Add-JobTriggercmdlets , Set-JobTriggere Set-ScheduledJobOption fornecem maneiras muito mais fáceis de realizar essas tarefas. Para criar um novo trabalho agendado, use o Register-ScheduledJob cmdlet.

O parâmetro Trigger de adiciona um ou mais gatilhos de Set-ScheduledJob trabalho que iniciam o trabalho. O parâmetro Trigger é opcional, portanto, você pode adicionar gatilhos ao criar o trabalho agendado, adicionar gatilhos de trabalho posteriormente, adicionar o parâmetro RunNow para iniciar o trabalho imediatamente, usar o Start-Job cmdlet para iniciar o trabalho imediatamente a qualquer momento ou salvar o trabalho agendado não disparado como um modelo para outros trabalhos.

Set-ScheduledJob é um de uma coleção de cmdlets de agendamento de trabalho no módulo PSScheduledJob incluído no Windows PowerShell.

Para obter mais informações sobre trabalhos agendados, consulte os tópicos sobre o módulo PSScheduledJob. Importe o módulo PSScheduledJob e digite: Get-Help about_Scheduled* ou consulte about_Scheduled_Jobs.

Este cmdlet foi introduzido no Windows PowerShell 3.0.

Exemplos

Exemplo 1: Alterar o script que um trabalho executa

Este exemplo mostra como alterar o script que é executado em um trabalho agendado.

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

O primeiro comando usa o Get-ScheduledJob cmdlet para obter o trabalho agendado de Inventário. A saída mostra que o trabalho executa o script Get-Inventory.ps1.

O segundo comando usa o Get-ScheduledJob cmdlet para obter o trabalho agendado Inventário. Um operador de pipeline (|) envia o trabalho agendado para o Set-ScheduledJob cmdlet. O Set-ScheduledJob cmdlet usa o parâmetro Script para especificar um novo script, Get-FullInventory.ps1. O comando usa o parâmetro PassThru para retornar o trabalho agendado após a alteração.

Este comando não é obrigatório. Ele está incluído apenas para mostrar o efeito da alteração do script.

Exemplo 2: Excluir o histórico de execução de um trabalho agendado

Este exemplo exclui o histórico de execução atual e os resultados de trabalho salvos para um trabalho agendado.

Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory

O comando usa o Get-ScheduledJob cmdlet para obter o trabalho agendado BackupArchive. Um operador de pipeline (|) envia o trabalho para o Set-ScheduledJob cmdlet para alterá-lo. O Set-ScheduledJob cmdlet usa o parâmetro ClearExecutionHistory para excluir o histórico de execução e os resultados salvos.

Para obter mais informações sobre o histórico de execução e os resultados de trabalho salvos de trabalhos agendados, consulte about_Scheduled_Jobs.

Exemplo 3: Alterar trabalhos agendados em um computador remoto

Esse comando altera o script de inicialização em todos os trabalhos agendados em computadores remotos.

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

O comando usa o Invoke-Command cmdlet para executar um comando nos computadores Server01 e Server02.

O comando remoto começa com um Get-ScheduledJob comando que obtém todos os trabalhos agendados no computador. Os trabalhos agendados são canalizados para o Set-ScheduledJob cmdlet, que altera o script de inicialização para SetForRun.ps1.

Parâmetros

-ArgumentList

Especifica valores para os parâmetros do script especificado pelo parâmetro FilePath ou para o comando especificado pelo parâmetro ScriptBlock .

Tipo:Object[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Authentication

Especifica o mecanismo usado para autenticar as credenciais do usuário. Os valores aceitáveis para esse parâmetro são:

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

O valor padrão é Default. Para obter mais informações sobre os valores desse parâmetro, consulte Enumeração AuthenticationMechanism no SDK do PowerShell.

Cuidado

A autenticação do Provedor de Suporte à Segurança de Credenciais (CredSSP), na qual as credenciais do usuário são passadas para um computador remoto para serem autenticadas, foi projetada para comandos que exigem autenticação em mais de um recurso, como acessar um compartilhamento de rede remoto. Esse mecanismo aumenta o risco de segurança da operação remota. Se o computador remoto estiver comprometido, as credenciais que são passadas a ele podem ser usadas para controlar a sessão de rede.

Tipo:AuthenticationMechanism
Valores aceitos:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ClearExecutionHistory

Exclui o histórico de execução atual e os resultados salvos do trabalho agendado.

O histórico de execução do trabalho e os resultados do trabalho são salvos com o trabalho agendado $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs no diretório do computador em que o trabalho é criado. Para ver o histórico de execução, use o Get-Job cmdlet. Para obter os resultados do trabalho, use o Receive-Job cmdlet.

Esse parâmetro não afeta os eventos que o Agendador de tarefas grava nos logs de eventos do Windows e não impede que o Windows PowerShell salve os resultados do trabalho. Para gerenciar o número de resultados de trabalho salvos, use o parâmetro MaxResultCount .

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Credential

Especifica uma conta de usuário que tenha permissão para executar o trabalho agendado. O padrão é o usuário atual.

Digite um nome de usuário, como User01 ou Domain01\User01, ou insira um objeto PSCredential , como um do Get-Credential cmdlet. Se você inserir apenas um nome de usuário, uma senha será solicitada.

Tipo:PSCredential
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-FilePath

Especifica um script que o trabalho agendado executa. Insira o caminho para um arquivo .ps1 no computador local. Para especificar valores padrão para os parâmetros de script, use o parâmetro ArgumentList . Cada trabalho agendado deve ter um valor ScriptBlock ou FilePath .

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InitializationScript

Especifica o caminho totalmente qualificado para um script do Windows PowerShell (.ps1). O script de inicialização é executado na sessão criada para o trabalho em segundo plano antes dos comandos especificados pelo parâmetro ScriptBlock ou pelo script especificado pelo parâmetro FilePath . Você pode usar o script de inicialização para configurar a sessão, adicionando arquivos, funções ou aliases, criando diretórios ou verificando pré-requisitos.

Para especificar um script que executa os comandos de trabalho primários, use o parâmetro FilePath .

Se o script de inicialização gerar um erro, incluindo um erro de não encerramento, a instância atual do trabalho agendado não será executada e seu status será Failed.

Tipo:ScriptBlock
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-InputObject

Especifica o trabalho agendado a ser alterado. Insira uma variável que contenha objetos ScheduledJobDefinition ou digite um comando ou expressão que obtenha objetos ScheduledJobDefinition , como um Get-ScheduledJob comando. Você também pode canalizar um objeto ScheduledJobDefinition para Set-ScheduledJob.

Se você especificar vários trabalhos agendados, Set-ScheduledJob o fará as mesmas alterações em todos os trabalhos.

Tipo:ScheduledJobDefinition
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

-MaxResultCount

Especifica quantas entradas de resultado do trabalho são mantidas para o trabalho agendado. O valor padrão é 32.

O Windows PowerShell salva o histórico de execução e os resultados de cada instância disparada do trabalho agendado no disco. O valor desse parâmetro determina o número de resultados de instância de trabalho que são salvas para essa tarefa agendada. Quando o número de resultados de instância de trabalho excede esse valor, o Windows PowerShell exclui os resultados da instância de trabalho mais antiga para abrir espaço para os resultados da instância de trabalho mais recente.

O histórico de execução do trabalho e os resultados do trabalho são salvos no $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> diretórios no computador no qual o trabalho é criado. Para ver o histórico de execução, use o Get-Job cmdlet. Para obter os resultados do trabalho, use o Receive-Job cmdlet.

O parâmetro MaxResultCount define o valor da propriedade ExecutionHistoryLength do trabalho agendado.

Para excluir o histórico de execução atual e os resultados do trabalho, use o parâmetro ClearExecutionHistory .

Tipo:Int32
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Name

Especifica um novo nome para o trabalho agendado e instâncias do trabalho agendado. O nome deve ser exclusivo no computador local.

Para identificar o trabalho agendado a ser alterado, use o parâmetro InputObject ou canalize um trabalho agendado de Get-ScheduledJob para .Set-ScheduledJob

Esse parâmetro não altera os nomes das instâncias de trabalho em disco. Ele afeta somente instâncias de trabalho que foram iniciadas após a conclusão do comando.

Tipo:String
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-PassThru

Retorna um objeto que representa o item com que você está trabalhando. Por padrão, este cmdlet não gera saída.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-RunAs32

Executa o trabalho agendado em um processo de 32 bits.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-RunEvery

Usado para especificar a frequência de execução do trabalho. Por exemplo, use essa opção para executar um trabalho a cada 15 minutos.

Tipo:TimeSpan
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-RunNow

Inicia um trabalho imediatamente, assim que o Set-ScheduledJob cmdlet é executado. Esse parâmetro elimina a necessidade de disparar o Agendador de tarefas para executar um script do Windows PowerShell imediatamente após o registro e não exige que os usuários criem um disparador que especifica a data e a hora de início.

Tipo:SwitchParameter
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ScheduledJobOption

Define opções para o trabalho agendado. Insira um objeto ScheduledJobOptions , como um que você cria usando o New-ScheduledJobOption cmdlet, ou um valor de tabela de hash.

Você pode definir opções para um trabalho agendado ao registrar o trabalho agendado ou usar os Set-ScheduledJobOption cmdlets ou Set-ScheduledJob para definir ou alterar opções.

Muitas das opções e seus valores padrão determinam se e quando um trabalho agendado será executado. Certifique-se de examinar essas opções antes de agendar um trabalho. Para obter uma descrição das opções de trabalho agendado, incluindo os valores padrão, consulte New-ScheduledJobOption.

Para enviar uma tabela de hash, use as seguintes chaves. Na tabela de hash a seguir, as chaves são exibidas com seus valores padrão.

@{# 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
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-ScriptBlock

Especifica os comandos que o trabalho agendado executa. Coloque os comandos entre chaves ({}) para criar um bloco de script. Para especificar valores padrão para parâmetros de comando, use o parâmetro ArgumentList .

Cada Register-ScheduledJob comando deve usar os parâmetros ScriptBlock ou FilePath .

Tipo:ScriptBlock
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

-Trigger

Especifica os gatilhos para o trabalho agendado. Insira um ou mais objetos ScheduledJobTrigger , como os objetos que o New-JobTrigger cmdlet retorna ou uma tabela de hash de chaves e valores de gatilho de trabalho.

Um gatilho de trabalho inicia um trabalho agendado automaticamente em um agendamento único ou recorrente ou quando ocorre um evento.

Disparadores de trabalho são opcionais. Você pode adicionar um gatilho ao criar o trabalho agendado, usar os Add-JobTrigger cmdlets ou Set-ScheduledJob para adicionar gatilhos posteriormente ou usar o Start-Job cmdlet para iniciar o trabalho agendado imediatamente. Você também pode criar e manter um trabalho agendado sem nenhum disparador de trabalho.

Para enviar uma tabela de hash, use as seguintes chaves.

@{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am" (ou qualquer sequência de tempo válida); DaysOfWeek="Monday", "Wednesday" (ou qualquer combinação de nomes de dias); Interval=2 (ou qualquer intervalo de frequência válido); RandomDelay="30minutes" (ou qualquer string de intervalo de tempo válida); User="Domain1\User01" (ou qualquer usuário válido; usado apenas com o valor de frequência AtLogon)

}

Tipo:ScheduledJobTrigger[]
Cargo:Named
Valor padrão:None
Obrigatório:False
Aceitar a entrada de pipeline:False
Aceitar caracteres curinga:False

Entradas

ScheduledJobDefinition

Você pode canalizar um trabalho agendado para esse cmdlet.

Saídas

None

Por padrão, esse cmdlet não retorna nenhuma saída.

ScheduledJobDefinition

Quando você usa o parâmetro PassThru , esse cmdlet retorna o trabalho agendado que ele alterou.