about_Scheduled_Jobs
Descrizione breve
Descrive i processi pianificati e spiega come usare e gestire processi pianificati in PowerShell e in Utilità di pianificazione.
Descrizione lunga
I processi pianificati di PowerShell sono un ibrido utile di processi in background di PowerShell e attività dell'Utilità di pianificazione.
Come i processi in background di PowerShell, i processi pianificati vengono eseguiti in modo asincrono in background. Le istanze di processi pianificati che sono in esecuzione possono essere gestite usando i cmdlet del processo, ad esempio Start-Job
, Stop-Job
Get-Job
, e Receive-Job
.
Analogamente alle attività dell'Utilità di pianificazione, i processi pianificati vengono salvati su disco. È possibile visualizzare e gestire i processi in Utilità di pianificazione, abilitarli e disabilitarli in base alle esigenze, eseguirli o usarli come modelli, stabilire pianificazioni occasionali o ricorrenti per l'avvio dei processi o impostare condizioni in base alle quali i processi vengono avviati.
Inoltre, i risultati delle istanze di processo pianificate vengono salvati su disco in un formato facilmente accessibile, fornendo un log di output del processo in esecuzione. I processi pianificati sono dotati di un set personalizzato di cmdlet per gestirli. I cmdlet consentono di creare, modificare, gestire, disabilitare e riabilitare processi pianificati, trigger di processo e opzioni di processo.
Questo set completo e flessibile di strumenti rende i processi pianificati un componente essenziale di molte soluzioni IT di PowerShell professionali.
I cmdlet di processo pianificati sono inclusi nel modulo PSScheduledJob installato con PowerShell. Questo modulo è stato introdotto in PowerShell 3.0 e funziona in PowerShell 3.0 e versioni successive di PowerShell. Per altre informazioni sui cmdlet contenuti nel modulo PSScheduledJob , vedere PSScheduledJob.
Per altre informazioni sui processi in background di PowerShell, vedere about_Jobs.
Per altre informazioni sull'Utilità di pianificazione, vedere Utilità di pianificazione.
Nota
È possibile visualizzare e gestire i processi pianificati di PowerShell nell'Utilità di pianificazione. I processi di PowerShell e i cmdlet di processo pianificati funzionano solo su processi pianificati creati in PowerShell.
Avvio rapido
In questo esempio viene creato un processo pianificato che inizia ogni giorno alle 3:00 ed esegue il Get-Process
cmdlet . Il processo viene avviato anche se il computer è in esecuzione su batterie.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
Il Get-ScheduledJob
cmdlet ottiene i processi pianificati nel computer locale.
Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Get-JobTrigger
ottiene i trigger di processo di ProcessJob. I parametri di input specificano il processo pianificato, non il trigger, perché i trigger vengono salvati in un processo pianificato.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
In questo esempio viene utilizzato il parametro ContinueIfGoingOnBattery del Set-ScheduledJob
cmdlet per modificare la proprietà StopIfGoingOnBatteries di ProcessJob su False.
Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -PassThru
StartIfOnBatteries : True
StopIfGoingOnBatteries : False
WakeToRun : True
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
Il Get-ScheduledJob
cmdlet ottiene il processo pianificato ProcessJob .
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Il Get-Job
cmdlet ottiene tutte le istanze del processo pianificato ProcessJob che sono state eseguite finora. Il Get-Job
cmdlet ottiene processi pianificati solo quando il modulo PSScheduledJob viene importato nella sessione corrente.
Suggerimento
Si noti che si usano i cmdlet dei processi pianificati per gestire i processi pianificati, ma si usano i cmdlet di processo per gestire le istanze dei processi pianificati.
Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
Il Receive-Job
cmdlet ottiene i risultati dell'istanza più recente del processo pianificato ProcessJob (ID = 51).
Receive-Job -ID 51
Anche se il Receive-Job
comando non include il parametro Keep , i risultati del processo vengono salvati su disco fino a quando non vengono eliminati o viene superato il numero massimo di risultati.
I risultati del processo non sono più disponibili in questa sessione, ma se si avvia una nuova sessione o si apre una nuova finestra di PowerShell, i risultati del processo sono nuovamente disponibili.
Il comando seguente usa il parametro DefinitionName del Start-Job
cmdlet per avviare il processo pianificato ProcessJob .
I processi avviati tramite il Start-Job
cmdlet sono processi in background di PowerShell standard, non istanze del processo pianificato. Come tutti i processi in background, questi processi vengono avviati immediatamente, non sono soggetti a opzioni di processo o interessati dai trigger di processo e il relativo output non viene salvato nella directory di output della directory dei processi pianificati.
Start-Job -DefinitionName ProcessJob
Il Unregister-ScheduledJob
cmdlet elimina il processo pianificato ProcessJob e tutti i risultati salvati delle relative istanze del processo.
Unregister-ScheduledJob ProcessJob
Concetti relativi ai processi pianificati
Un processo pianificato esegue comandi o uno script. Un processo pianificato può includere trigger di processo che avviano il processo e le opzioni di processo che impostano le condizioni per l'esecuzione del processo.
Un trigger di processo avvia automaticamente un processo pianificato. Un trigger di processo può includere una pianificazione occasionale o ricorrente o specificare un evento, ad esempio all'avvio di un utente o all'avvio di Windows. Un processo pianificato può avere uno o più trigger di processo ed è possibile creare, aggiungere, abilitare, disabilitare e ottenere trigger di processo.
I trigger di processo sono facoltativi. È possibile avviare immediatamente i processi pianificati usando o Start-Job cmdlet
aggiungendo il parametro RunNow al Register-ScheduledJob
comando.
Le opzioni del processo impostano le condizioni per l'esecuzione di un processo pianificato. Ogni processo pianificato ha un oggetto opzioni processo. È possibile creare e modificare oggetti opzioni processo e aggiungerli a uno o più processi pianificati.
Ogni volta che viene avviato un processo pianificato, viene creata un'istanza del processo. Usare i cmdlet del processo di PowerShell per visualizzare e gestire l'istanza del processo.
I processi pianificati vengono salvati su disco e usano il verbo del cmdlet , Register
anziché New
. I file XML si trovano nel computer locale nella directory $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
.
PowerShell crea una directory per ogni processo pianificato e salva i comandi di processo, i trigger di processo, le opzioni di processo e i risultati del processo nella directory dei processi pianificata. I trigger di processo e le opzioni di processo non vengono salvati su disco in modo indipendente. Vengono salvati nel codice XML del processo pianificato di ogni processo pianificato a cui sono associati.
I processi pianificati, i trigger di processo e le opzioni di processo vengono visualizzati in PowerShell come oggetti. Gli oggetti sono collegati, semplificando l'individuazione e l'uso nei comandi e negli script.
I processi pianificati vengono visualizzati come oggetti ScheduledJobDefinition . L'oggetto ScheduledJobDefinition dispone di una proprietà JobTriggers che contiene i trigger di processo del processo pianificato e una proprietà Options che contiene le opzioni del processo. Gli oggetti ScheduledJobTriggers e ScheduledJobOptions che rappresentano rispettivamente trigger di processo e opzioni di processo, ognuno ha una proprietà JobDefinition che contiene il processo pianificato a cui sono associati. Questa interconnessione ricorsiva consente di trovare facilmente i trigger e le opzioni di un processo pianificato e di trovare, creare script e visualizzare il processo pianificato a cui è associata qualsiasi opzione di processo o processo.