Interrompe un processo in background di Windows PowerShell.

Sintassi

Stop-Job [[-InstanceId] <Guid[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Job [-Job] <Job[]> [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Job [[-Name] <string[]>] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Job [-Id] <Int32[]> [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Stop-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]

Descrizione

Il cmdlet Stop-Job arresta i processi in background di Windows PowerShell in corso. È possibile utilizzare questo cmdlet per interrompere tutti i processi o quelli selezionati in base al nome, all'ID, all'ID istanza, allo stato o passando un oggetto processo a Stop-Job.

È possibile utilizzare Stop-Job per interrompere i processi avviati tramite Start-Job o tramite il parametro AsJob di Invoke-Command. Quando si arresta un processo in background, in Windows PowerShell vengono completate tutte le attività in sospeso nella coda di quel processo, quindi viene terminato il processo. Nessuna nuova attività è stata aggiunta alla coda dopo l'invio di questo comando.

Questo cmdlet non elimina i processi in background. Per eliminare un processo, utilizzare Remove-Job.

Parametri

-Id <Int32[]>

Interrompe i processi con gli ID specificati. Il valore predefinito è impostato su tutti i processi della sessione corrente.

L'ID è un valore intero che identifica in modo univoco il processo all'interno della sessione corrente. È più facile da ricordare e digitare rispetto all'ID istanza, ma è univoco solo nella sessione corrente. È possibile digitare uno o più ID (separati da virgole). Per trovare l'ID di un processo, digitare "Get-Job" senza parametri.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-InstanceId <Guid[]>

Interrompe solo i processi con gli ID istanza specificati. Il valore predefinito è impostato su tutti i processi.

Un ID istanza è un GUID che identifica in modo univoco il processo nel computer. Per trovare l'ID istanza di un processo, utilizzare Get-Job.

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Job <Job[]>

Specifica i processi da interrompere. Immettere una variabile che contiene i processi o un comando che consenta di ottenerli. È anche possibile utilizzare un operatore pipeline per inviare i processi al cmdlet Stop-Job. Per impostazione predefinita, Stop-Job elimina tutti i processi avviati nella sessione corrente.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByValue, ByPropertyName)

Accettare caratteri jolly?

false

-Name <string[]>

Interrompe solo i processi con i nomi descrittivi specificati. Immettere i nomi dei processi in un elenco separato da virgole oppure utilizzare caratteri jolly (*) per immettere un modello di nome di processo. Per impostazione predefinita, Stop-Job interrompe tutti i processi creati nella sessione corrente.

Poiché non è garantito che il nome descrittivo sia univoco, utilizzare i parametri WhatIf e Confirm in caso di interruzione dei processi per nome.

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

true

-PassThru

Restituisce un oggetto che rappresenta il nuovo processo in background. Per impostazione predefinita, il cmdlet non genera alcun output.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-State <JobState>

Interrompe solo i processi nello stato specificato. I valori validi sono NotStarted, Running, Completed, Stopped, Failed e Blocked.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Confirm

Chiede una conferma prima di eseguire il comando.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-WhatIf

Descrive ciò che accadrebbe se si eseguisse il comando senza eseguirlo realmente.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.Management.Automation.RemotingJob

È possibile reindirizzare un oggetto processo a Stop-Job.

Output

Nessuno o System.Management.Automation.RemotingJob

Quando si utilizza il parametro PassThru, Stop-Job restituisce un oggetto processo. Negli altri casi, il cmdlet non genera alcun output.

Esempio 1

C:\PS>$s = new-pssession -computername Server01 -credential domain01\admin02

C:\PS> $j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog system}} 

C:\PS> invoke-command -session $s -scriptblock {param($j) stop-job -job $j} -ArgumentList $j

Descrizione
-----------
In questo esempio viene illustrato come utilizzare il cmdlet Stop-Job per interrompere un processo in esecuzione in un computer remoto. 

Poiché il processo è stato avviato tramite Invoke-Command per eseguire un comando Start-Job in modalità remota, l'oggetto processo viene archiviato nel computer remoto ed è necessario utilizzare un altro comando Invoke-Command per eseguire un comando Stop-Job in modalità remota. Per ulteriori informazioni sui processi in background remoti, vedere about_Remote_Jobs.

Il primo comando crea una sessione di Windows PowerShell (PSSession) nel computer Server01 e salva l'oggetto sessione nella variabile $s. Vengono utilizzate le credenziali di un amministratore di dominio. 

Nel secondo comando viene utilizzato il cmdlet Invoke-Command per eseguire un comando Start-Job nella sessione. Il comando nel processo ottiene tutti gli eventi del registro eventi del sistema. L'oggetto processo risultante viene archiviato nella variabile $j. 

Il terzo comando interrompe il processo. Viene utilizzato il cmdlet Invoke-Command per eseguire un comando Stop-Job nella sessione PSSession in Server01. Poiché gli oggetti processo vengono archiviati in $j, una variabile nel computer locale, il comando utilizza la parola chiave "param" per dichiarare le variabili locali nel comando e il parametro ArgumentList per fornire valori per le variabili. 

Al termine dell'esecuzione del comando, il processo viene arrestato e la sessione PSSession in $s è disponibile per l'uso.






Esempio 2

C:\PS>stop-job -state failed

Descrizione
-----------
Questo comando interrompe tutti i processi con un valore di stato "Failed".






Esempio 3

C:\PS>stop-job -name job1

Descrizione
-----------
Questo comando interrompe il processo in background Job1.






Esempio 4

C:\PS>stop-job -id 1, 3, 4

Descrizione
-----------
Questo comando interrompe tre processi. Tali processi vengono identificati tramite i relativi ID.






Esempio 5

C:\PS>get-job | stop-job

Descrizione
-----------
Questo comando interrompe tutti i processi in background nella sessione corrente.






Esempio 6

C:\PS>stop-job -state blocked

Descrizione
-----------
Questo comando interrompe tutti i processi con stato "Blocked".






Esempio 7

C:\PS>get-job | format-table ID, Name, Command, @{Label="State";Expression={$_.jobstateinfo.state}}, I
nstanceID -auto

Id Name Command                 State  InstanceId
-- ---- -------                 -----  ----------
 1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
 3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
 5 Job5 get-service s*         Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf

C:\PS> stop-job -instanceid e3bbfed1-9c53-401a-a2c3-a8db34336adf

Descrizione
-----------
Questi comandi indicano come interrompere un processo in base al relativo ID istanza. 

Il primo comando utilizza un cmdlet Get-Job per ottenere i processi nella sessione corrente. Viene utilizzato un operatore pipeline (|) per inviare i processi comando Format-Table tramite cui viene visualizzata una tabella delle proprietà specificate di ciascun processo. La tabella include l'ID istanza di ogni processo. Viene utilizzata una proprietà calcolata per visualizzare lo stato del processo.

Il secondo comando utilizza un comando Stop-Job con il parametro InstanceID per interrompere un processo selezionato.






Esempio 8

C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-eventlog system} -asjob

C:\PS> $j | stop-job -passthru

Id    Name    State      HasMoreData     Location         Command
--    ----    ----      -----------     --------          -------
5     Job5    Stopped    True            judithh-tablet   get-eventlog system

Descrizione
-----------
In questo esempio viene illustrato come utilizzare il cmdlet Stop-Job per interrompere un processo in esecuzione in un computer remoto. 

Poiché il processo è stato avviato tramite il parametro AsJob di Invoke-Command, l'oggetto processo si trova nel computer locale, anche se il processo viene eseguito nel computer remoto. Di conseguenza, è possibile utilizzare un comando Stop-Job locale per interrompere il processo.

Nel primo comando viene utilizzato il cmdlet Invoke-Command per avviare un processo in background nel computer Server01. Viene utilizzato il parametro AsJob per eseguire il comando remoto come processo in background. 

Questo comando restituisce un oggetto processo, lo stesso oggetto processo restituito da Start-Job. Il comando consente di salvare l'oggetto processo nella variabile $j.

Il secondo comando utilizza un operatore pipeline per inviare il processo nella variabile $j a Stop-Job. Il comando utilizza il parametro PassThru per indicare a Stop-Job di restituire un oggetto processo. La visualizzazione dell'oggetto processo conferma che lo stato del processo è "Stopped".

Per ulteriori informazioni sui processi in background remoti, vedere about_Remote_Jobs.






Vedere anche




Argomenti della Guida