Stop-Job
Arresta un processo in background di PowerShell.
Sintassi
Stop-Job
[-PassThru]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Stop-Job
[-PassThru]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il Stop-Job
cmdlet arresta i processi in background di PowerShell in corso. È possibile usare questo cmdlet per arrestare tutti i processi o arrestare i processi selezionati in base al nome, all'ID, all'ID istanza o allo stato oppure passando un oggetto processo a Stop-Job
.
È possibile usare Stop-Job
per arrestare i processi in background, ad esempio quelli avviati usando il Start-Job
cmdlet o il parametro AsJob di qualsiasi cmdlet. Quando si arresta un processo in background, PowerShell completa tutte le attività in sospeso nella coda del processo e quindi termina il processo. Dopo l'invio di questo comando non vengono aggiunte nuove attività alla coda.
Questo cmdlet non elimina i processi in background. Per eliminare un processo, usare il Remove-Job
cmdlet .
A partire da Windows PowerShell 3.0, Stop-Job
arresta anche i tipi di processi personalizzati, ad esempio WorkflowJobs e istanze di ScheduledJobs. Per abilitare Stop-Job
l'arresto di un processo con tipo di processo personalizzato, importare il modulo che supporta il tipo di processo personalizzato nella sessione prima di eseguire un Stop-Job
comando, usando il Import-Module
cmdlet o usando o ottenendo un cmdlet nel modulo. Per informazioni su un tipo di processo personalizzato particolare, vedere la documentazione relativa alla funzionalità del tipo di processo personalizzato.
Esempio
Esempio 1: Arrestare un processo in un computer remoto con Invoke-Command
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
In questo esempio viene illustrato come usare il Stop-Job
cmdlet per arrestare un processo in esecuzione in un computer remoto.
Poiché il processo è stato avviato con il Invoke-Command
cmdlet per eseguire un Start-Job
comando in remoto, l'oggetto processo viene archiviato nel computer remoto. È necessario usare un altro Invoke-Command
comando per eseguire un Stop-Job
comando in modalità remota. Per altre informazioni sui processi remoti in background, vedere about_Remote_Jobs.
Il primo comando crea una sessione di PowerShell (PSSession) nel computer Server01 e quindi archivia l'oggetto sessione nella $s
variabile . Il comando usa le credenziali di un amministratore di dominio.
Il secondo comando usa il Invoke-Command
cmdlet per eseguire un Start-Job
comando nella sessione. Il comando nel processo ottiene tutti gli eventi nel registro eventi di sistema. L'oggetto processo risultante viene archiviato nella $j
variabile .
Il terzo comando arresta il processo. Usa il Invoke-Command
cmdlet per eseguire un Stop-Job
comando in PSSession su Server01. Poiché gli oggetti processo vengono archiviati in $j
, ovvero una variabile nel computer locale, il comando usa il modificatore Using scope per identificare $j
come variabile locale. Per altre informazioni sul modificatore Uso dell'ambito, vedere about_Remote_Variables.
Al termine del comando, il processo viene arrestato e la sessione PSSession in $s
è disponibile per l'uso.
Esempio 2: Arrestare un processo in background
Stop-Job -Name "Job1"
Questo comando arresta il Job1
processo in background.
Esempio 3: Arrestare diversi processi in background
Stop-Job -Id 1, 3, 4
Questo comando arresta tre processi. Li identifica in base ai relativi ID.
Esempio 4: Arrestare tutti i processi in background
Get-Job | Stop-Job
Questo comando arresta tutti i processi in background nella sessione corrente.
Esempio 5: Arrestare tutti i processi in background bloccati
Stop-Job -State Blocked
Questo comando arresta tutti i processi bloccati.
Esempio 6: Arrestare un processo in base all'ID istanza
Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -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
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf
Questi comandi illustrano come arrestare un processo in base all'ID istanza.
Il primo comando usa il Get-Job
cmdlet per ottenere i processi nella sessione corrente. Il comando usa un operatore pipeline (|
) per inviare i processi a un Format-Table
comando, che visualizza una tabella delle proprietà specificate di ogni processo. La tabella include l'ID istanza di ogni processo. Usa una proprietà calcolata per visualizzare lo stato del processo.
Il secondo comando usa un Stop-Job
comando con il parametro InstanceID per arrestare un processo selezionato.
Esempio 7: Arrestare un processo in un computer remoto
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru
Id Name State HasMoreData Location Command
-- ---- ---- ----------- -------- -------
5 Job5 Stopped True user01-tablet Get-EventLog -LogName Sy...
In questo esempio viene illustrato come usare il Stop-Job
cmdlet per arrestare un processo in esecuzione in un computer remoto.
Poiché il processo è stato avviato con il parametro AsJob del Invoke-Command
cmdlet, l'oggetto Job si trova nel computer locale, anche se il processo viene eseguito nel computer remoto. Pertanto, è possibile usare un comando locale Stop-Job
per arrestare il processo.
Il primo comando usa il Invoke-Command
cmdlet per avviare un processo in background nel computer Server01. Il comando usa il parametro AsJob per eseguire il comando remoto come processo in background.
Questo comando restituisce un oggetto processo, che corrisponde allo stesso oggetto processo restituito dal Start-Job
cmdlet.
Il comando salva l'oggetto processo nella $j
variabile .
Il secondo comando usa un operatore pipeline per inviare il processo nella $j
variabile a Stop-Job
. Il comando usa il parametro PassThru per indirizzare Stop-Job
la restituzione di un oggetto processo. La visualizzazione dell'oggetto processo conferma che lo stato del processo è Arrestato.
Per altre informazioni sui processi in background remoti, vedere about_Remote_Jobs.
Parametri
-Confirm
Richiede conferma prima di eseguire il cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Filter
Specifica una tabella hash di condizioni. Questo cmdlet arresta i processi che soddisfano ogni condizione. Immettere una tabella hash in cui le chiavi sono le proprietà del processo e i valori sono i valori di queste proprietà.
Questo parametro funziona solo sui tipi di processo personalizzati, ad esempio WorkflowJobs e ScheduledJobs. Non funziona su processi in background standard, ad esempio quelli creati usando il Start-Job
cmdlet .
Per informazioni sul supporto di questo parametro, vedere l'argomento della Guida relativo al tipo di processo.
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Tipo: | Hashtable |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Id
Specifica gli ID dei processi arrestati da questo cmdlet. Per impostazione predefinita, vengono considerati tutti i processi nella sessione corrente.
L'ID è un numero intero che identifica in modo univoco il processo nella sessione corrente. È più facile ricordare e digitare l'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
.
Tipo: | Int32[] |
Posizione: | 0 |
Valore predefinito: | All jobs |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-InstanceId
Specifica gli ID istanza dei processi arrestati da questo cmdlet. Il valore predefinito corrisponde a 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, usare Get-Job
.
Tipo: | Guid[] |
Posizione: | 0 |
Valore predefinito: | All jobs |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Job
Specifica i processi arrestati da questo cmdlet. Immettere una variabile che contiene i processi o un comando che li ottiene. È anche possibile usare un operatore pipeline per inviare processi al Stop-Job
cmdlet . Per impostazione predefinita, Stop-Job
elimina tutti i processi avviati nella sessione corrente.
Tipo: | Job[] |
Posizione: | 0 |
Valore predefinito: | All jobs |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Name
Specifica i nomi descrittivi dei processi arrestati da questo cmdlet. Immettere i nomi dei processi in un elenco delimitato da virgole o usare caratteri jolly (*
) per immettere un modello di nome processo. Per impostazione predefinita, Stop-Job
arresta tutti i processi creati nella sessione corrente.
Poiché il nome descrittivo non è garantito che sia univoco, usare i parametri WhatIf e Confirm durante l'arresto dei processi in base al nome.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | All jobs |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-PassThru
Restituisce un oggetto che rappresenta l'elemento in uso. Per impostazione predefinita, il cmdlet non genera alcun output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-State
Specifica uno stato del processo. Questo cmdlet arresta solo i processi nello stato specificato. I valori validi per questo parametro sono:
NotStarted
Running
Completed
Failed
Stopped
Blocked
Suspended
Disconnected
Suspending
Stopping
Per altre informazioni sugli stati dei processi, vedere Enumerazione JobState.
Tipo: | JobState |
Valori accettati: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
Posizione: | 0 |
Valore predefinito: | All jobs |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Tipo: | SwitchParameter |
Alias: | wi |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
System.Management.Automation.RemotingJob
È possibile inviare tramite pipe un oggetto processo a questo cmdlet.
Output
None
Per impostazione predefinita, questo cmdlet non restituisce alcun output.
System.Management.Automation.PSRemotingJob
Quando si usa il parametro PassThru , questo cmdlet restituisce un oggetto processo.
Note
PowerShell include gli alias seguenti per Stop-Job
:
- Tutte le piattaforme:
spjb