Stop-Job
Arresta un processo in background di PowerShell.
Sintassi
SessionIdParameterSet (Impostazione predefinita)
Stop-Job
[-Id] <Int32[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
JobParameterSet
Stop-Job
[-Job] <Job[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
NameParameterSet
Stop-Job
[-Name] <String[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InstanceIdParameterSet
Stop-Job
[-InstanceId] <Guid[]>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
StateParameterSet
Stop-Job
[-State] <JobState>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
FilterParameterSet
Stop-Job
[-Filter] <Hashtable>
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il cmdlet Stop-Job 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 cmdlet Start-Job o il parametro asjob 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. Non vengono aggiunte nuove attività alla coda dopo l'invio di questo comando.
Questo cmdlet non elimina i processi in background. Per eliminare un'attività, usare il cmdlet Remove-Job.
A partire da Windows PowerShell 3.0, Stop-Job arresta anche i tipi di processo personalizzati, ad esempio WorkflowJobs e istanze di ScheduledJobs. Per consentire Stop-Job di arrestare un processo con tipo di processo personalizzato, importare il modulo che supporta il tipo di processo personalizzato nella sessione prima di eseguire un comando Stop-Job, usando il cmdlet Import-Module oppure usando o ottenendo un cmdlet nel modulo. Per informazioni su un particolare tipo di processo personalizzato, vedere la documentazione della 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 cmdlet Stop-Job per arrestare un processo in esecuzione in un computer remoto.
Poiché il processo è stato avviato con il cmdlet Invoke-Command per eseguire un comando Start-Job in remoto, l'oggetto processo viene archiviato nel computer remoto. È necessario usare un altro comando Invoke-Command per eseguire un comando Stop-Job in modalità remota. Per altre informazioni sui processi in background remoti, vedere about_Remote_Jobs.
Il primo comando crea una sessione di PowerShell (PSSession) nel computer Server01 e quindi archivia l'oggetto sessione nella variabile $s. Il comando usa le credenziali di un amministratore di dominio.
Il secondo comando usa il cmdlet Invoke-Command per eseguire un comando Start-Job nella sessione. Il comando nel processo ottiene tutti gli eventi nel registro eventi di sistema. L'oggetto processo risultante viene archiviato nella variabile $j.
Il terzo comando arresta il processo. Usa il cmdlet Invoke-Command per eseguire un comando di Stop-Job nella PSSession su Server01. Poiché gli oggetti processo vengono archiviati in $j, che è una variabile nel computer locale, il comando usa il modificatore di ambito Using: per identificare $j come variabile locale. Per altre informazioni sul modificatore di Using: ambito, vedere about_Remote_Variables.
Al termine del comando, il processo viene arrestato e il PSSession in $s è disponibile per l'uso.
Esempio 2: Arrestare un processo in background
Stop-Job -Name "Job1"
Questo comando arresta il processo in background Job1.
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 alla relativa InstanceId.
Il primo comando usa il cmdlet Get-Job per ottenere i processi nella sessione corrente. Il comando usa un operatore pipeline (|) per inviare i processi a un comando Format-Table, che visualizza una tabella delle proprietà specificate di ogni processo. La tabella include il InstanceId di ogni processo. Usa una proprietà calcolata per visualizzare lo stato del processo.
Il secondo comando usa un comando Stop-Job 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 cmdlet Stop-Job per arrestare un processo in esecuzione in un computer remoto.
Poiché il processo è stato avviato con il parametro di AsJob del cmdlet Invoke-Command, l'oggetto processo si trova nel computer locale, anche se il processo viene eseguito nel computer remoto. È quindi possibile usare un comando Stop-Job locale per arrestare il processo.
Il primo comando usa il cmdlet Invoke-Command per avviare un processo in background nel computer Server01. Il comando usa il parametro asjob di per eseguire il comando remoto come processo in background.
Questo comando restituisce un oggetto processo, ovvero lo stesso oggetto processo restituito dal cmdlet Start-Job.
Il comando salva l'oggetto processo nella variabile $j.
Il secondo comando usa un operatore pipeline per inviare il processo nella variabile $j a Stop-Job. Il comando usa il parametro PassThru per indirizzare Stop-Job a restituire 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.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | cfr |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | 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 proprietà del processo e i valori sono valori delle proprietà del processo.
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 cmdlet Start-Job.
Per informazioni sul supporto per questo parametro, vedere l'argomento della guida relativo al tipo di processo.
Questo parametro è stato introdotto in Windows PowerShell 3.0.
Proprietà dei parametri
| Tipo: | Hashtable |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
FilterParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-Id
Specifica gli ID dei processi arrestati da questo cmdlet. Il valore predefinito è tutti i processi nella sessione corrente.
L'ID è un numero intero che identifica in modo univoco il lavoro nella 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 lavoro, digitare Get-Job.
Proprietà dei parametri
| Tipo: | Int32[] |
| Valore predefinito: | All jobs |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
SessionIdParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-InstanceId
Specifica gli ID istanza dei processi arrestati da questo cmdlet. Il valore predefinito è tutte le attività.
Un ID istanza è un GUID che identifica in modo univoco l'attività nel computer. Per trovare l'ID istanza di un processo, utilizzare Get-Job.
Proprietà dei parametri
| Tipo: | Guid[] |
| Valore predefinito: | All jobs |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
InstanceIdParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-Job
Specifica i processi arrestati da questo cmdlet. Immettere una variabile contenente i processi o un comando che ottiene i processi. È anche possibile usare un operatore pipeline per inviare processi al cmdlet Stop-Job. Per impostazione predefinita, Stop-Job elimina tutti i processi avviati nella sessione corrente.
Proprietà dei parametri
| Tipo: | Job[] |
| Valore predefinito: | All jobs |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
JobParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | 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 il WhatIf e Confirm parametri durante l'arresto dei processi in base al nome.
Proprietà dei parametri
| Tipo: | String[] |
| Valore predefinito: | All jobs |
| Supporta i caratteri jolly: | True |
| DontShow: | False |
Set di parametri
NameParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-PassThru
Restituisce un oggetto che rappresenta l'elemento con cui si sta lavorando. Per impostazione predefinita, questo cmdlet non genera alcun output.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-State
Specifica uno stato di lavoro. Questo cmdlet arresta solo i processi nello stato specificato. I valori accettabili per questo parametro sono:
NotStartedRunningCompletedFailedStoppedBlockedSuspendedDisconnectedSuspendingStopping
Per altre informazioni sugli stati del processo, vedere 'enumerazione JobState.
Proprietà dei parametri
| Tipo: | JobState |
| Valore predefinito: | All jobs |
| Valori accettati: | NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
StateParameterSet
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | True |
| Valore dagli argomenti rimanenti: | False |
-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.
Proprietà dei parametri
| Tipo: | SwitchParameter |
| Valore predefinito: | False |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
| Alias: | Wi |
Set di parametri
(All)
| Posizione: | Named |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
System.Management.Automation.RemotingJob
È possibile instradare 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
Windows PowerShell include gli alias seguenti per Stop-Job:
spjb