Condividi tramite


Set-ScheduledJob

Modifica i processi pianificati.

Sintassi

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>]

Descrizione

Il cmdlet Set-ScheduledJob modifica le proprietà dei processi pianificati, ad esempio i comandi eseguiti dai processi o le credenziali necessarie per eseguire il processo. Consente inoltre di cancellare la cronologia di esecuzione del processo pianificato.

Per usare questo cmdlet, iniziare usando il cmdlet Get-ScheduledJob per ottenere il processo pianificato. Eseguire quindi la pipe del processo pianificato in Set-ScheduledJob o salvare il processo in una variabile e usare il parametro InputObject per identificare il processo. Usare i parametri rimanenti di Set-ScheduledJob per modificare le proprietà del processo o cancellare la cronologia di esecuzione.

Anche se è possibile usare Set-ScheduledJob per modificare i trigger e le opzioni di un processo pianificato, il cmdlet Add-JobTrigger, Set-JobTrigger e Set-ScheduledJobOption offrono modi molto più facili per eseguire tali attività. Per creare un nuovo processo pianificato, usare il cmdlet Register-ScheduledJob.

Il parametro Trigger di Set-ScheduledJob aggiunge uno o più trigger di processo che avviano il processo. Il parametro Trigger è facoltativo, quindi è possibile aggiungere trigger quando si crea il processo pianificato, aggiungere i trigger di processo in un secondo momento, aggiungere il parametro RunNow per avviare immediatamente il processo, usare il cmdlet Start-Job per avviare immediatamente il processo o salvare il processo pianificato non eseguito come modello per altri processi.

Set-ScheduledJob è una delle raccolte di cmdlet di pianificazione dei processi nel modulo PSScheduledJob incluso in Windows PowerShell.

Per altre informazioni sui lavori pianificati, vedere gli argomenti Informazioni nel modulo PSScheduledJob. Importare il modulo PSScheduledJob e quindi digitare: Get-Help about_Scheduled* o vedere about_Scheduled_Jobs.

Questo cmdlet è stato introdotto in Windows PowerShell 3.0.

Esempio

Esempio 1: Modificare lo script eseguito da un processo

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

Questo esempio illustra come modificare lo script che viene eseguito in un processo pianificato.

Il primo comando usa il cmdlet Get-ScheduledJob per ottenere il processo pianificato dell'inventario. L'output mostra che il processo esegue lo script Get-Inventory.ps1.

Questo comando non è necessario. È incluso solo per mostrare l'effetto della modifica dello script.

Esempio 2: Eliminare la cronologia di esecuzione di un processo pianificato

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

Questo comando elimina la cronologia di esecuzione corrente e i risultati del processo salvati per il processo pianificato BackupArchive.

Il comando usa il cmdlet Get-ScheduledJob per ottenere il processo pianificato BackupArchive. Un operatore pipeline (|) invia il processo al cmdlet Set-ScheduledJob per modificarlo. Il cmdlet Set-ScheduledJob usa il parametro ClearExecutionHistory per eliminare la cronologia di esecuzione e i risultati salvati.

Per altre informazioni sulla cronologia di esecuzione e i risultati dei processi pianificati salvati, vedere about_Scheduled_Jobs.

Esempio 3: Modificare i processi pianificati in un computer remoto

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

Questo comando modifica lo script di inizializzazione in tutti i processi pianificati sui computer Server01 e Server02.

Il comando usa il cmdlet Invoke-Command per eseguire un comando nei computer Server01 e Server02.

Il comando remoto inizia con un comando Get-ScheduledJob che ottiene tutti i processi pianificati nel computer. I processi pianificati vengono inviati tramite pipe al cmdlet Set-ScheduledJob , che modifica lo script di inizializzazione in SetForRun.ps1.

Parametri

-ArgumentList

Specifica i valori per i parametri dello script specificato dal parametro FilePath o per il comando specificato dal parametro ScriptBlock.

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Specifica il meccanismo usato per autenticare le credenziali dell'utente. I valori validi per questo parametro sono:

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

Il valore predefinito è Default. Per altre informazioni sui valori di questo parametro, vedere Enumerazione AuthenticationMechanism nella libreria MSDN.

Attenzione: l'autenticazione del provider di supporto per la sicurezza delle credenziali (CredSSP), in cui le credenziali dell'utente vengono passate a un computer remoto da autenticare, è progettato per i comandi che richiedono l'autenticazione su più di una risorsa, ad esempio l'accesso a una condivisione di rete remota. Questo meccanismo aumenta il rischio per la sicurezza dell'operazione remota. Se infatti il computer remoto viene compromesso, le credenziali che gli vengono passate possono essere usate per controllare la sessione di rete.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ClearExecutionHistory

Elimina la cronologia di esecuzione corrente e i risultati salvati del processo pianificato.

La cronologia di esecuzione e i risultati del processo vengono salvati nelle directory $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs nel computer in cui è stato creato il processo. Per visualizzare la cronologia di esecuzione, usare il cmdlet Get-Job. Per ottenere i risultati del processo, usare il cmdlet Receive-Job.

Questo parametro non influenza gli eventi che l'Utilità di pianificazione scrive nei log eventi di Windows e non impedisce di salvare i risultati del processo in Windows PowerShell. Per gestire il numero di risultati del processo che sono stati salvati, usare il parametro MaxResultCount.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Specifica un account utente che dispone dell'autorizzazione per eseguire il processo pianificato. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01 oppure immettere un oggetto PSCredential , ad esempio uno dal cmdlet Get-Credential. Se si digita solo un nome utente, viene richiesta una password.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

Specifica uno script eseguito dal processo pianificato. Immettere il percorso di un file con estensione ps1 nel computer locale. Per specificare i valori predefiniti per i parametri di script usare il parametro ArgumentList. Ogni processo pianificato deve avere un valore ScriptBlock o FilePath.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InitializationScript

Specifica il percorso completo di uno script di Windows PowerShell (.ps1). Lo script di inizializzazione viene eseguito nella sessione creata per il processo in background prima che vengano specificati i comandi dal parametro ScriptBlock o lo script dal parametro FilePath. È possibile usare lo script di inizializzazione per configurare la sessione, ad esempio aggiungere file, funzioni e alias, creare directory o controllare prerequisiti.

Per specificare uno script che esegue i comandi del processo primario usare il parametro FilePath.

Se lo script di inizializzazione genera un errore, incluso un errore non terminante, l'istanza corrente del processo pianificato non viene eseguita e il relativo stato non è riuscito.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Specifica il processo pianificato da modificare. Immettere una variabile contenente oggetti ScheduledJobDefinition o digitare un comando o un'espressione che ottiene oggetti ScheduledJobDefinition , ad esempio un comando Get-ScheduledJob. È anche possibile inviare una pipe a un oggetto ScheduledJobDefinition su Set-ScheduledJob.

Se si specificano più processi pianificati, Set-ScheduledJob applica le stesse modifiche a tutti i processi.

Type:ScheduledJobDefinition
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-MaxResultCount

Specifica quante voci di risultato del processo vengono mantenute per il processo pianificato. Il valore predefinito è (32).

Windows PowerShell salva la cronologia di esecuzione e i risultati di ogni istanza con trigger del processo pianificato su disco. Il valore di questo parametro determina il numero di risultati dell'istanza del processo salvato per il processo pianificato. Quando il numero di risultati dell'istanza del processo supera questo valore, Windows PowerShell elimina i risultati del processo meno recente per liberare spazio per i risultati dell'istanza del processo più recente.

La cronologia e i risultati del processo vengono salvati nelle directory $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs<\JobName>\Output\<Timestamp> nel computer in cui viene creato il processo. Per visualizzare la cronologia di esecuzione, usare il cmdlet Get-Job. Per ottenere i risultati del processo, usare il cmdlet Receive-Job.

Il parametro MaxResultCount imposta la proprietà ExecutionHistoryLength del processo pianificato.

Per eliminare la cronologia di esecuzione corrente e i risultati del processo usare il parametro ClearExecutionHistory.

Type:Int32
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Specifica un nuovo nome per il processo pianificato e le istanze del processo pianificato. Il nome deve essere univoco nel computer locale.

Per identificare il processo pianificato da modificare, usare il parametro InputObject o inviare tramite pipe un processo pianificato da Get-ScheduledJob a Set-ScheduledJob.

Questo parametro non modifica i nomi delle istanze del processo su disco, ma solo le istanze di processo che vengono avviate dopo il completamento del comando.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Restituisce un oggetto che rappresenta l'elemento in uso. Per impostazione predefinita, il cmdlet non genera alcun output.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAs32

Esegue il processo pianificato in un processo a 32 bit.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunEvery

Consente di specificare la frequenza con cui eseguire il processo. Ad esempio, usare questa opzione per eseguire un processo ogni 15 minuti.

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunNow

Avvia immediatamente un processo non appena viene eseguito il cmdlet Set-ScheduledJob . Questo parametro evita di dover attivare Utilità di pianificazione per eseguire uno script di Windows PowerShell subito dopo la registrazione e non richiede agli utenti di creare un trigger che specifichi una data e un'ora di inizio.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScheduledJobOption

Imposta le opzioni per il processo pianificato. Immettere un oggetto ScheduledJobOptions , ad esempio quello creato usando il cmdlet New-ScheduledJobOption o un valore di tabella hash.

È possibile impostare le opzioni per un processo pianificato quando si registra il processo pianificato oppure si usano i cmdlet Set-ScheduledJobOption o Set-ScheduledJob per impostare o modificare le opzioni.

Molte opzioni e i relativi valori predefiniti determinano se e quando viene eseguito un processo pianificato. Assicurarsi di esaminare queste opzioni prima di pianificare un processo. Per una descrizione delle opzioni di processo pianificate, inclusi i valori predefiniti, vedere New-ScheduledJobOption.

Per inviare una tabella hash, usare le chiavi seguenti. Nella seguente tabella hash, le chiavi vengono visualizzate con i relativi valori predefiniti.

@{# 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}

Type:ScheduledJobOptions
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

Specifica i comandi eseguiti dal processo pianificato. Racchiudere i comandi tra parentesi graffe ({}) per creare un blocco di script. Per specificare i valori predefiniti per i parametri di comando usare il parametro ArgumentList.

Ogni comando Register-ScheduledJob deve usare il parametro ScriptBlock o FilePath.

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Trigger

Specifica i trigger per il processo pianificato. Immettere uno o più oggetti ScheduledJobTrigger , ad esempio gli oggetti restituiti dal cmdlet New-JobTrigger oppure una tabella hash di chiavi e valori del trigger del processo.

Un trigger di processo avvia automaticamente un processo pianificato in base a una pianificazione una tantum o ricorrente o quando si verifica un evento.

I trigger di processo sono facoltativi. È possibile aggiungere un trigger quando si crea il processo pianificato, usare i cmdlet Add-JobTrigger o Set-ScheduledJob per aggiungere trigger in un secondo momento oppure usare il cmdlet Start-Job per avviare immediatamente il processo pianificato. È anche possibile creare e mantenere un processo pianificato senza alcun trigger di processo.

Per inviare una tabella hash, usare le chiavi seguenti.

@{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am" (o qualsiasi stringa temporale valida); DaysOfWeek="Monday", "Wednesday" (o qualsiasi combinazione di nomi dei giorni); Interval=2 (o qualsiasi intervallo di frequenza valido); RandomDelay="30minutes" (o qualsiasi stringa intervallo di tempo valida); User="Domain1\User01" (o qualsiasi utente valido; usato solo con il valore di frequenza AtLogon)

}

Type:ScheduledJobTrigger[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

ScheduledJobDefinition

È possibile inviare tramite pipe i processi pianificati a Set-ScheduledJob.

Output

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Se si usa il parametro Passthru, Set-ScheduledJob restituisce il processo pianificato modificato. In caso contrario, il cmdlet non genera alcun output.