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 processi vengono identificati dal nome , ID, InstanceId, Commando State. In alternativa, è possibile inviare un oggetto processo 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
ha esito negativo. 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 processo usando il nome
In questo esempio viene usata 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 processo viene archiviato nella variabile $batch
. L'oggetto in $batch
viene inviato alla 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 processo vengono inviati alla pipeline per Remove-Job
.
Esempio 3: Eliminare processi 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 processi 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 criterio include il carattere jolly asterisco (*
) per trovare tutti i nomi di processo che terminano con batch. Il parametro Force elimina i processi in esecuzione.
Esempio 5: Eliminare un processo 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 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 processo nel computer Server01. Il parametro AsJob esegue il ScriptBlock come processo in background. L'oggetto processo viene archiviato nella variabile $job
. L'oggetto variabile $job
viene inviato alla pipeline per Remove-Job
.
Esempio 6: Eliminare un processo creato 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 processo remoto. 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 processo 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 alla 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 su processi in background standard, ad esempio quelli creati usando 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
Elimina un processo anche se lo stato del processo è In esecuzione. 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 di specificato. È possibile immettere una matrice delimitata da virgole. L'ID del processo è un numero intero univoco che identifica un processo all'interno della sessione corrente.
Per trovare l'ID di un processo, 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 i processi con l'InstanceId specificato. È possibile immettere una matrice delimitata da virgole. Un InstanceId è un GUID univoco che identifica un processo.
Per trovare InstanceId di un processo, usare Get-Job
.
Tipo: | Guid[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Job
Specifica i processi 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 processo 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 descrittivo 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 processi con lo stato specificato. Per eliminare i processi con stato Running, usare il parametro Force.
Valori accettati:
- AtBreakpoint
- Bloccato
- Finito
- Sconnesso
- Fallito
- NotStarted
- Corsa
- Fermata
- 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
viene 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 di 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 processo, 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.