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 Set-ScheduledJob cmdlet 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 Get-ScheduledJob cmdlet per ottenere il processo pianificato. Inviare quindi tramite pipe il processo pianificato a 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.

Sebbene sia possibile usare Set-ScheduledJob per modificare i trigger e le opzioni di un processo pianificato, i Add-JobTriggercmdlet , Set-JobTriggere Set-ScheduledJobOption offrono modi molto più semplici per eseguire tali attività. Per creare un nuovo processo pianificato, usare il Register-ScheduledJob cmdlet .

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 trigger di processo in un secondo momento, aggiungere il parametro RunNow per avviare immediatamente il processo, usare il cmdlet per avviare il Start-Job processo immediatamente in qualsiasi momento o salvare il processo pianificato non elaborato come modello per altri processi.

Set-ScheduledJob è una raccolta 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 visualizzare about_Scheduled_Jobs.

Questo cmdlet è stato introdotto in Windows PowerShell 3.0.

Esempio

Esempio 1: Modificare lo script eseguito da un processo

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

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

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

Il secondo comando usa il Get-ScheduledJob cmdlet per ottenere il processo pianificato inventario. Un operatore pipeline (|) invia il processo pianificato al Set-ScheduledJob cmdlet . Il Set-ScheduledJob cmdlet usa il parametro Script per specificare un nuovo script, Get-FullInventory.ps1. Il comando usa il parametro Passthru per restituire il processo pianificato dopo la modifica.

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

In questo esempio viene eliminata la cronologia di esecuzione corrente e i risultati dei processi salvati per un processo pianificato.

Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory

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

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

Esempio 3: Modificare i processi pianificati in un computer remoto

Questo comando modifica lo script di inizializzazione in tutti i processi pianificati nei computer remoti.

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

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

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

Parametri

-ArgumentList

Specifica i valori per i parametri dello script specificati 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 AuthenticationMechanism Enumeration in PowerShell SDK.

Attenzione

L'autenticazione credSSP (Credential Security Support Provider), 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:None
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 del processo e i risultati del processo vengono salvati con il processo pianificato nella $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs directory nel computer in cui viene creato il processo. Per visualizzare la cronologia di esecuzione, usare il Get-Job cmdlet . Per ottenere i risultati del processo, usare il Receive-Job cmdlet .

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 salvati, usare il parametro MaxResultCount .

Type:SwitchParameter
Position:Named
Default value:None
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 del Get-Credential cmdlet. Se si digita solo un nome utente, viene richiesta una password.

Type:PSCredential
Position:Named
Default value:None
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 dello 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 dei comandi specificati dal parametro ScriptBlock o dallo script specificato 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 irreversibile, 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 Get-ScheduledJob comando. È anche possibile inviare tramite pipe un oggetto ScheduledJobDefinition a Set-ScheduledJob.

Se si specificano più processi pianificati, Set-ScheduledJob apporta 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 di esecuzione del processo e i risultati del processo vengono salvati in $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> directory nel computer in cui viene creato il processo. Per visualizzare la cronologia di esecuzione, usare il Get-Job cmdlet . Per ottenere i risultati del processo, usare il Receive-Job cmdlet .

Il parametro MaxResultCount imposta il valore della 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:None
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:None
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:None
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 Set-ScheduledJob cmdlet. 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 New-ScheduledJobOption cmdlet o un valore di tabella hash.

È possibile impostare le opzioni per un processo pianificato quando si registra il processo pianificato oppure si usano i Set-ScheduledJobOption cmdlet 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 Register-ScheduledJob comando deve usare i parametri 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 New-JobTrigger cmdlet o una tabella hash di chiavi e valori del trigger di processo.

Un trigger di processo avvia automaticamente un processo pianificato in base a una pianificazione singola 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 Add-JobTrigger cmdlet o Set-ScheduledJob per aggiungere trigger in un secondo momento oppure usare il Start-Job cmdlet 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 della 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 un processo pianificato a questo cmdlet.

Output

None

Per impostazione predefinita, questo cmdlet non restituisce alcun output.

ScheduledJobDefinition

Quando si usa il parametro PassThru , questo cmdlet restituisce il processo pianificato modificato.