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 Remove-Job
cmdlet elimina i processi in background di PowerShell avviati dal Start-Job
cmdlet o dai cmdlet, Invoke-Command
ad esempio che supportano il parametro AsJob .
È possibile usare Remove-Job
per eliminare tutti i processi o eliminare i processi selezionati. I processi vengono identificati in base al nome, all'ID, all'ID istanza, al comando o allo stato. In alternativa, un oggetto processo può essere inviato 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
l'operazione ha esito negativo. Usare il Stop-Job
cmdlet 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 Name per specificare il processo, BatchJob. L'oggetto processo viene archiviato nella $batch
variabile . 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 a 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 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é nell'esempio viene utilizzato il parametro AsJob , l'oggetto processo viene creato nel computer locale. Tuttavia, il processo viene eseguito in un computer remoto. Di conseguenza, per gestire il processo è possibile usare comandi locali.
$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job
Invoke-Command
esegue un processo nel computer Server01 . Il parametro AsJob esegue ScriptBlock come processo in background. L'oggetto processo viene archiviato nella $job
variabile . L'oggetto $job
variabile viene inviato alla pipeline a 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 tramite 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 remoto Start-Job
, è 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 una sessione PSSession, una connessione permanente, al computer Server01 . La connessione viene salvata nella $S
variabile .
Invoke-Command
si connette alla sessione salvata in $S
. ScriptBlock usa Start-Job
per avviare un processo remoto. Il processo esegue un Get-Process
comando e usa il parametro Name per specificare un nome descrittivo del processo, MyJob.
Invoke-Command
usa la $S
sessione ed esegue Remove-Job
. Il parametro Name 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 valore 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 $job
variabile .
L'oggetto in $job
viene inviato alla pipeline a Format-List
. Il parametro Property usa 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.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Confirm
Richiede conferma prima Remove-Job
dell'esecuzione.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Filter
Elimina i processi che soddisfano tutte le condizioni stabilite nella tabella hash associata. 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 su tipi di processo personalizzati, ad esempio i processi del flusso di lavoro e i processi pianificati. Non funziona su processi in background standard, ad esempio quelli creati usando .Start-Job
Questo parametro è stato introdotto in PowerShell 3.0.
Type: | Hashtable |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Aliases: | F |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Elimina i processi in background con l'ID 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.
Type: | Int32[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InstanceId
Elimina i processi con il valore InstanceId specificato. È possibile immettere una matrice delimitata da virgole. InstanceId è un GUID univoco che identifica un processo.
Per trovare il valore InstanceId di un processo, usare Get-Job
.
Type: | Guid[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Job
Specifica i processi da eliminare. Immettere una variabile che contiene i processi o un comando che li ottiene. È possibile immettere una matrice delimitata da virgole.
È possibile inviare oggetti processo nella pipeline a Remove-Job
.
Type: | Job[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Elimina solo i processi con il nome descrittivo specificato. I caratteri jolly sono consentiti. È 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.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-State
Elimina solo i processi con lo stato specificato. Per eliminare i processi con lo stato In esecuzione, usare il parametro Force .
Valori accettati:
- AtBreakpoint
- Bloccati
- Completato
- Disconnesso
- Non riuscito
- NotStarted
- In esecuzione
- Arrestato
- Arresto in corso
- Sospeso
- Suspending
Type: | JobState |
Accepted values: | AtBreakpoint, Blocked, Completed, Disconnected, Failed, NotStarted, Running, Stopped, Stopping, Suspended, Suspending |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Mostra cosa accadrebbe se Remove-Job
viene eseguito. Il cmdlet non viene eseguito.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Input
È possibile inviare tramite pipe un oggetto Job a questo cmdlet.
Output
None
Questo cmdlet non restituisce 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.