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-JobGet-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 cmdletaggiungendo 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 , Registeranziché 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.

Vedi anche