Condividi tramite


Informazioni sulle nozioni di base sui processi pianificati

Breve descrizione

Illustra come creare e gestire processi pianificati.

Descrizione lunga

Questo documento illustra come eseguire attività di base per la creazione e la gestione di processi pianificati. Per informazioni sulle attività più avanzate, vedere about_Scheduled_Jobs_Advanced.

Come creare un processo pianificato

Per creare un processo pianificato, usare il Register-ScheduledJob cmdlet . Il cmdlet richiede un nome e i comandi o script eseguiti dal processo. È possibile eseguire immediatamente il processo aggiungendo il parametro RunNow oppure creare un trigger di processo e impostare le opzioni di processo quando si crea il processo oppure modificare un processo esistente.

Per creare un processo che esegue uno script, usare il parametro FilePath per specificare il percorso del file di script. Per creare un processo che esegue i comandi, usare il parametro ScriptBlock .

Il Register-ScheduledJob cmdlet crea processjob, che esegue un Get-Process comando. Questo processo pianificato include le opzioni di processo predefinite e nessun trigger di processo.

Register-ScheduledJob -Name ProcessJob -ScriptBlock { Get-Process }
Id         Name            Triggers        Command       Enabled
--         ----            --------        -------       -------
8          ProcessJob      {}              Get-Process   True

Come creare un trigger di processo

I trigger di processo avviano automaticamente un processo pianificato. Un trigger di processo può essere una sola volta o una pianificazione ricorrente o un evento, ad esempio all'avvio di un utente o di Windows. Ogni processo può avere zero, uno o più trigger di processo.

Per creare un trigger di processo, usare il New-JobTrigger cmdlet . Il comando seguente crea un trigger di processo che avvia un processo ogni lunedì e giovedì alle 5:00. Il comando salva il trigger del processo nella $T variabile .

$T = New-JobTrigger -Weekly -DaysOfWeek "Monday", "Thursday" -At "5:00 AM"

I trigger di processo sono facoltativi. È possibile avviare un processo pianificato in qualsiasi momento aggiungendo il parametro RunNow al Register-ScheduledJob comando o usando i Start-Job cmdlet .

Come aggiungere un trigger di processo

Quando si aggiunge un trigger di processo a un processo pianificato, il trigger di processo viene aggiunto al file XML del processo pianificato per il processo pianificato e diventa parte del processo pianificato.

È possibile aggiungere un trigger di processo a un processo pianificato quando si crea il processo pianificato o si modifica un processo esistente. È possibile modificare il trigger del processo di un processo pianificato in qualsiasi momento.

PowerShell usa alcuni degli stessi trigger di processo usati dall'Utilità di pianificazione. Per informazioni dettagliate sui trigger di processo, vedere l'argomento della Guida per il cmdlet New-JobTrigger .

Nell'esempio seguente viene usato lo splatting per creare $JobParms i valori dei parametri passati al Register-ScheduledJob cmdlet . Per altre informazioni, vedere about_Splatting.md. Viene Register-ScheduledJob utilizzato @JobParms per creare un processo pianificato. Usa il parametro Trigger per specificare il trigger del processo nella $T variabile .

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Command}
  Trigger = $T
}

Register-ScheduledJob @JobParms

È anche possibile aggiungere un trigger di processo a un processo pianificato esistente in qualsiasi momento. Il Add-JobTrigger cmdlet aggiunge il trigger di processo nella $T variabile al processo pianificato ProcessJob .

Add-JobTrigger -Name ProcessJob -Trigger $T

Di conseguenza, il trigger del processo avvia automaticamente ProcessJob ogni lunedì e giovedì alle 5:00.

Come ottenere un trigger di processo

Per ottenere il trigger di processo di un processo pianificato, usare il Get-JobTrigger cmdlet . Usare i parametri Name, ID e InputObject per specificare il processo pianificato, non il trigger del processo.

Get-JobTriggerottiene il trigger del processo del processo.

Get-JobTrigger -Name ProcessJob
Id   Frequency       Time                   DaysOfWeek              Enabled
--   ---------       ----                   ----------              -------
1    Weekly          11/7/2011 5:00:00 AM   {Monday, Thursday}      True

Come creare opzioni di processo

Le opzioni del processo stabiliscono le condizioni per l'avvio e l'esecuzione del processo. Ogni processo include le opzioni di processo predefinite, a meno che non vengano modificate. Poiché le opzioni del processo possono impedire l'esecuzione di un processo all'ora pianificata, è importante comprendere le opzioni del processo e usarle con attenzione.

PowerShell usa le stesse opzioni di processo usate dall'Utilità di pianificazione. Per informazioni dettagliate sulle opzioni del processo, vedere l'argomento della Guida per New-ScheduledJobOption.

Le opzioni del processo vengono archiviate nel file XML del processo pianificato. È possibile impostare le opzioni di processo quando si crea un processo pianificato o le si modifica in qualsiasi momento.

Il New-ScheduledJobOption cmdlet crea un'opzione di processo pianificata in cui l'opzione di processo pianificato WakeToRun è impostata su True. L'opzione WakeToRun esegue il processo pianificato anche se il computer si trova nello stato Sospensione o Ibernazione all'ora di inizio pianificata. Il comando salva le opzioni del processo nella $O variabile .

$O = New-ScheduledJobOption -WakeToRun

Come ottenere le opzioni di processo

Per ottenere le opzioni di processo di un processo pianificato, usare il Get-ScheduledJobOption cmdlet . Usare i parametri Name, ID e InputObject per specificare il processo pianificato, non le opzioni del processo.

Get-ScheduledJobOption ottiene le opzioni del processo del processo.

Get-ScheduledJobOption -Name ProcessJob
StartIfOnBatteries     : False
StopIfGoingOnBatteries : True
WakeToRun              : False
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

Come modificare le opzioni del processo

È possibile modificare le opzioni di processo di un processo pianificato quando si crea un processo pianificato o si modifica un processo esistente.

Gli splatted $JobParms vengono passati al Add-JobTrigger cmdlet per creare il processo di processo. Usa il parametro ScheduledJobOption per specificare le opzioni del $O processo nella variabile .

$JobParms = @{
  Name = "ProcessJob"
  ScriptBlock = {Get-Process}
  ScheduledJobOption = $O
}

Add-JobTrigger @JobParms

È anche possibile modificare le opzioni del processo in un processo pianificato esistente in qualsiasi momento. Il comando seguente usa il Set-ScheduledJobOption cmdlet per modificare il valore dell'opzione WakeToRun di ProcessJob scheduledJob su True.

I Set cmdlet nel modulo PSScheduledJob , ad esempio il Set-ScheduledJobOption cmdlet , non hanno parametri Name o ID . È possibile usare il parametro InputObject per specificare le opzioni di processo pianificate o inviare tramite pipe un processo pianificato dal Get-ScheduledJobOption cmdlet a Set-ScheduledJobOption.

In questo esempio viene usato il Get-ScheduledJob cmdlet per ottenere ProcessJob. Usa il Get-ScheduledJobOption cmdlet per ottenere le opzioni di processo in ProcessJob e il Set-ScheduledJobOption cmdlet per modificare l'opzione del processo WakeToRun in ProcessJob su True.

Get-ScheduledJob -Name ProcessJob | Get-ScheduledJobOption |
 Set-ScheduledJobOption -WakeToRun

Come ottenere istanze di processo pianificate

Quando viene avviato un processo pianificato, PowerShell crea un'istanza del processo simile a un processo in background di PowerShell standard. È possibile usare i cmdlet del processo, ad esempio Get-Job, Stop-Job e Receive-Job per gestire le istanze del processo.

Nota

Per usare i cmdlet di processo in istanze di processi pianificati, è necessario importare il modulo PSScheduledJob nella sessione. Per importare il modulo PSScheduledJob , digitare Import-Module PSScheduledJob o usare qualsiasi cmdlet di processo pianificato, ad esempio Get-ScheduledJob.

Per ottenere tutte le istanze di processi pianificati di PowerShell e tutti i processi standard attivi, usare il Get-Job cmdlet . Il Import-Module cmdlet importa il modulo PSScheduledJob e Get-Job ottiene i processi nel computer locale.

Import-Module PSScheduledJob
Get-Job

Get-Job ottiene le istanze di ProcessJob nel computer locale.

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

La visualizzazione predefinita non mostra l'ora di inizio, che in genere distingue le istanze dello stesso processo pianificato.

Il Get-Job cmdlet invia gli oggetti verso il basso nella pipeline. Il Format-Table cmdlet visualizza le proprietà Name, ID e BeginTime del processo pianificato.

Get-Job ProcessJob | Format-Table -Property Name, ID, BeginTime
Name       Id BeginTime
----       -- ---------
ProcessJob 43 11/2/2011 3:00:02 AM
ProcessJob 44 11/3/2011 3:00:02 AM
ProcessJob 45 11/4/2011 3:00:02 AM
ProcessJob 46 11/5/2011 3:00:02 AM
ProcessJob 47 11/6/2011 3:00:02 AM
ProcessJob 48 11/7/2011 12:00:01 AM
ProcessJob 49 11/7/2011 3:00:02 AM
ProcessJob 50 11/8/2011 3:00:02 AM

Ottenere i risultati dei processi pianificati

Per ottenere i risultati di un'istanza di un processo pianificato, usare il Receive-Job cmdlet .

Nota

Per usare i cmdlet Job nelle istanze dei processi pianificati, è necessario importare il modulo PSScheduledJob nella sessione. Per importare il modulo PSScheduledJob , digitare Import-Module PSScheduledJob o usare qualsiasi cmdlet di processo pianificato, ad esempio Get-ScheduledJob.

In questo esempio vengono ottenuti i risultati dell'istanza più recente del processo pianificato ProcessJob (ID = 51).

Import-Module PSScheduledJob
Receive-Job -ID 51 -Keep

I risultati dei processi pianificati vengono salvati su disco, pertanto il parametro Keep di Receive-Job non è obbligatorio. Tuttavia, senza il parametro Keep , è possibile ottenere i risultati di un processo pianificato una sola volta in ogni sessione di PowerShell. Per avviare una nuova sessione di PowerShell, digitare PowerShell o aprire una nuova finestra di PowerShell.

Vedi anche

about_Scheduled_Jobs_Advanced

about_Scheduled_Jobs_Troubleshooting

about_Scheduled_Jobs

about_Splatting.md

Utilità di pianificazione