about_Scheduled_Jobs_Basics
Descrizione breve
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.
Per altre informazioni sui cmdlet contenuti nel modulo PSScheduledJob , vedere PSScheduledJob.
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 o 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 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 pianificazione occasionale o 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 del 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.
Register-ScheduledJob
Usa @JobParms
per creare un processo pianificato. Usa il parametro Trigger per specificare il trigger di 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-JobTrigger
ottiene 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 di 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 li 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 di 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 nelle 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 oggetti 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 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
.
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.