Processi in background

I cmdlet possono eseguire l'azione internamente o come Windows PowerShell processo in background. Quando un cmdlet viene eseguito come processo in background, il lavoro viene eseguito in modo asincrono nel proprio thread separato dal thread della pipeline utilizzato dal cmdlet. Dal punto di vista dell'utente, quando un cmdlet viene eseguito come processo in background, il prompt dei comandi viene restituito immediatamente anche se il completamento del processo richiede una quantità prolungata di tempo e l'utente può continuare senza interruzioni durante l'esecuzione del processo.

Processi in background, processi figlio e repository processi

L'oggetto processo restituito dai cmdlet che supportano i processi in background definisce il processo. Il cmdlet Start-Job restituisce anche un oggetto processo. Il nome del processo, un identificatore usato per specificare il processo, le informazioni sullo stato e i processi figlio sono inclusi in questa definizione. Il processo non esegue alcuna operazione. Ogni processo in background ha almeno un processo figlio perché il processo figlio esegue il lavoro effettivo. Quando si esegue un cmdlet in modo che il lavoro sia eseguito come processo in background, il cmdlet deve aggiungere il processo e i processi figlio a un repository comune, definito repository di processi.

Per altre informazioni sulla gestione dei processi in background dalla riga di comando, vedere quanto segue:

Scrittura di un cmdlet eseguito come processo in background

Per scrivere un cmdlet che può essere eseguito come processo in background, è necessario completare le attività seguenti:

  • Definire un asJob parametro switch in modo che l'utente possa decidere se eseguire il cmdlet come processo in background.

  • Creare un oggetto che deriva dalla classe System.Management.Automation.Job. Questo oggetto può essere un oggetto processo personalizzato o un oggetto processo fornito da Windows PowerShell, ad esempio un oggetto System.Management.Automation.Pseventjob.

  • In un metodo di elaborazione dei record aggiungere un'istruzione che rileva se if il cmdlet deve essere eseguito come processo in background.

  • Per gli oggetti processo personalizzati, implementare la classe del processo.

  • Restituisce gli oggetti appropriati, a seconda che il cmdlet sia eseguito come processo in background.

Per un esempio di codice, vedere Come supportare i processi.

Le API seguenti vengono fornite da Windows PowerShell per gestire i processi in background.

System.Management.Automation.Job deriva oggetti processo personalizzati. Questa è una classe abstract.

System.Management.Automation.Jobrepository gestisce e fornisce informazioni sui processi in background attivi correnti.

System.Management.Automation.Jobstate Definisce lo stato del processo in background. Gli stati includono Avviato, In esecuzione e Arrestato.

System.Management.Automation.Jobstateinfo Fornisce informazioni sullo stato di un processo in background e, se l'ultima modifica di stato è stata causata da un errore, il motivo per cui il processo ha immesso lo stato corrente.

System.Management.Automation.Jobstateeventargs Fornisce gli argomenti per un evento generato quando un processo in background cambia stato.

Windows PowerShell Cmdlet di processo

I cmdlet seguenti vengono forniti da Windows PowerShell per gestire i processi in background.

Get-Job

Ottiene i processi in background di Windows PowerShell in esecuzione nella sessione corrente.

Receive-Job

Ottiene i risultati dei processi in background di Windows PowerShell nella sessione corrente.

Remove-Job

Elimina un processo in background di Windows PowerShell.

Start-Job

Avvia un processo in background di Windows PowerShell.

Stop-Job

Arresta un processo in background di Windows PowerShell.

Wait-Job

Elimina il prompt dei comandi finché non vengono completati uno o tutti i processi in background di Windows PowerShell in esecuzione nella sessione.

Vedere anche

Scrittura di un cmdlet di Windows PowerShell