Remove-Job
Elimina un processo in background di PowerShell.
Sintassi
Remove-Job
[-Force]
[-Id] <Int32[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Job] <Job[]>
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Name] <String[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-InstanceId] <Guid[]>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Force]
[-Filter] <Hashtable>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-State] <JobState>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Remove-Job
[-Command <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Descrizione
Il cmdlet Remove-Job
elimina i processi in background di PowerShell avviati dal cmdlet Start-Job
o da cmdlet come Invoke-Command
che supportano il parametro AsJob.
È possibile usare Remove-Job
per eliminare tutti i processi o eliminare i processi selezionati. I lavori vengono identificati dal nome , ID, ID istanza, comandoo stato. In alternativa, è possibile inviare un oggetto di lavoro alla pipeline a Remove-Job
. Senza parametri o valori di parametro, Remove-Job
non ha alcun effetto.
A partire da PowerShell 3.0, Remove-Job
può eliminare tipi di processi personalizzati, ad esempio processi pianificati e processi del flusso di lavoro. Ad esempio, Remove-Job
elimina il processo pianificato, tutte le istanze del processo pianificato su disco e i risultati di tutte le istanze di processo attivate.
Se si tenta di eliminare un processo in esecuzione, Remove-Job
fallisce. Usare il cmdlet Stop-Job
per arrestare un processo in esecuzione. In alternativa, usare Remove-Job
con il parametro Force per eliminare un processo in esecuzione.
I processi rimangono nella global job cache fino a quando non si elimina il processo in background o si chiude la sessione di PowerShell.
Esempio
Esempio 1: Eliminare un'attività utilizzando il nome
In questo esempio vengono usate una variabile e la pipeline per eliminare un processo in base al nome.
$batch = Get-Job -Name BatchJob
$batch | Remove-Job
Get-Job
usa il parametro nome per specificare il processo, BatchJob. L'oggetto lavoro viene memorizzato nella variabile $batch
. L'oggetto in $batch
viene inviato attraverso la pipeline a Remove-Job
.
Un'alternativa consiste nell'usare il parametro Job, ad esempio Remove-Job -Job $batch
.
Esempio 2: Eliminare tutti i processi in una sessione
In questo esempio vengono eliminati tutti i processi nella sessione di PowerShell corrente.
Get-Job | Remove-Job
Get-Job
ottiene tutti i processi nella sessione di PowerShell corrente. Gli oggetti di lavoro vengono inviati alla pipeline verso Remove-Job
.
Esempio 3: Eliminare i lavori NotStarted
In questo esempio vengono eliminati tutti i processi dalla sessione di PowerShell corrente che non è stata avviata.
Remove-Job -State NotStarted
Remove-Job
usa il parametro State per specificare lo stato del processo.
Esempio 4: Eliminare i lavori usando un nome descrittivo
In questo esempio vengono eliminati tutti i processi dalla sessione corrente con nomi descrittivi che terminano con batch, inclusi i processi in esecuzione.
Remove-Job -Name *batch -Force
Remove-Job
usa il parametro Name per specificare un modello di nome del processo. Il modello include il carattere jolly asterisco (*
) per trovare tutti i nomi di lavoro che terminano con il batch . Il parametro Force elimina i processi in esecuzione.
Esempio 5: Eliminare un lavoro creato da Invoke-Command
In questo esempio viene rimosso un processo avviato in un computer remoto usando Invoke-Command
con il parametro AsJob.
Poiché l'esempio usa il parametro AsJob, l'oggetto del processo viene creato nel computer locale. Tuttavia, il processo viene eseguito in un computer remoto. Di conseguenza, si usano i comandi locali per gestire il processo.
$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job
Invoke-Command
esegue un'attività sul computer Server01. Il parametro AsJob esegue il ScriptBlock come processo in background. L'oggetto lavoro viene memorizzato nella variabile $job
. L'oggetto variabile $job
viene inviato alla pipeline a Remove-Job
.
Esempio 6: Eliminare un'attività creata da Invoke-Command e Start-Job
In questo esempio viene illustrato come rimuovere un processo in un computer remoto avviato usando Invoke-Command
per eseguire Start-Job
. L'oggetto processo viene creato nel computer remoto e i comandi remoti vengono usati per gestire il processo. Quando si esegue un comando di Start-Job
remoto, è necessaria una connessione permanente.
$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -ScriptBlock {Start-Job -ScriptBlock {Get-Process} -Name MyJob}
Invoke-Command -Session $S -ScriptBlock {Remove-Job -Name MyJob}
New-PSSession
crea un PSSession, una connessione permanente, al computer Server01. La connessione viene salvata nella variabile $S
.
Invoke-Command
si connette alla sessione salvata in $S
. Il ScriptBlock usa Start-Job
per avviare un'operazione remota. Il processo esegue un comando Get-Process
e usa il parametro nome per specificare un nome descrittivo del processo, MyJob.
Invoke-Command
usa la sessione di $S
ed esegue Remove-Job
. Il parametro Nome specifica che il processo denominato MyJob viene eliminato.
Esempio 7: Eliminare un processo usando il relativo InstanceId
In questo esempio viene rimosso un lavoro in base al relativo InstanceId.
$job = Start-Job -ScriptBlock {Get-Process PowerShell}
$job | Format-List -Property *
Remove-Job -InstanceId ad02b942-8007-4407-87f3-d23e71955872
State : Completed
HasMoreData : True
StatusMessage :
Location : localhost
Command : Get-Process PowerShell
JobStateInfo : Completed
Finished : System.Threading.ManualResetEvent
InstanceId : ad02b942-8007-4407-87f3-d23e71955872
Id : 3
Name : Job3
ChildJobs : {Job4}
PSBeginTime : 7/26/2019 11:36:56
PSEndTime : 7/26/2019 11:36:57
PSJobTypeName : BackgroundJob
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
Information : {}
Start-Job
avvia un processo in background e l'oggetto processo viene salvato nella variabile $job
.
L'oggetto in $job
viene inviato attraverso la pipeline a Format-List
. Il parametro Property utilizza un asterisco (*
) per specificare che tutte le proprietà dell'oggetto vengono visualizzate in un elenco.
Remove-Job
usa il parametro InstanceId per specificare il processo da eliminare.
Parametri
-Command
Elimina i processi che includono le parole specificate nel comando . È possibile immettere una matrice delimitata da virgole.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Confirm
Richiede conferma prima dell'esecuzione di Remove-Job
.
Tipo: | SwitchParameter |
Alias: | cf |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Filter
Elimina i processi che soddisfano tutte le condizioni stabilite nella tabella hash associata. 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 su tipi di processi personalizzati, ad esempio processi del flusso di lavoro e processi pianificati. Non funziona sui lavori di background standard, come quelli creati utilizzando il Start-Job
.
Questo parametro è stato introdotto in PowerShell 3.0.
Tipo: | Hashtable |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Force
Anche se lo stato del task è In esecuzione, elimina un task. Se il parametro Force non è specificato, Remove-Job
non elimina i processi in esecuzione.
Tipo: | SwitchParameter |
Alias: | F |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Id
Elimina i processi in background con l'ID specificato . È possibile inserire un elenco separato da virgole. L'Id del lavoro è un numero intero univoco che identifica un lavoro all'interno della sessione corrente.
Per trovare l'ID di un lavoro, usare Get-Job
senza parametri.
Tipo: | Int32[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-InstanceId
Elimina le attività con l'InstanceId specificato. È possibile immettere una matrice delimitata da virgole. Un InstanceId è un GUID univoco che identifica un'attività.
Per trovare l'InstanceId di un lavoro, utilizzare Get-Job
.
Tipo: | Guid[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Job
Specifica le attività da eliminare. Immettere una variabile contenente i processi o un comando che ottiene i processi. È possibile immettere una matrice delimitata da virgole.
È possibile inviare oggetti di lavoro nella pipeline a Remove-Job
.
Tipo: | Job[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Name
Elimina solo i processi con il nome amichevole specificato. Sono consentiti caratteri jolly. È possibile immettere una matrice delimitata da virgole.
I nomi descrittivi per i processi non sono necessariamente univoci, anche all'interno di una sessione di PowerShell. Usare i parametri WhatIf e Confirm quando si eliminano i file in base al nome.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-State
Elimina solo i lavori con lo stato specificato. Per eliminare i processi con stato Running, usare il parametro Force.
Valori accettati:
- AtBreakpoint
- Bloccato
- Finito
- Sconnesso
- Fallito
- Non Iniziato
- Correre
- Arrestato
- Cessante
- Sospeso
- Sospensione
Tipo: | JobState |
Valori accettati: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-WhatIf
Mostra cosa accadrebbe se Remove-Job
venisse eseguito. 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
È possibile inviare tramite pipe un oggetto processo a questo cmdlet.
Output
None
Questo cmdlet non restituisce alcun output.
Note
PowerShell include gli alias seguenti per Remove-Job
:
- Tutte le piattaforme:
rjb
Un processo di PowerShell crea un nuovo processo. Al termine del lavoro, il processo viene chiuso. Quando Remove-Job
viene eseguito, lo stato del processo viene rimosso.
Se un processo si arresta prima del completamento e il relativo processo non è terminato, il processo viene terminato forzatamente.