Elimina un processo in background di Windows PowerShell.

Sintassi

Remove-Job [-Id] <Int32[]> [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]

Remove-Job [-Command <string[]>] [-Confirm] [-WhatIf] [<CommonParameters>]

Remove-Job [[-InstanceId] <Guid[]>] [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]

Remove-Job [-Job] <Job[]> [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]

Remove-Job [[-Name] <string[]>] [-Force] [-Confirm] [-WhatIf] [<CommonParameters>]

Remove-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-Confirm] [-WhatIf] [<CommonParameters>]

Descrizione

Il cmdlet Remove-Job consente di eliminare i processi in background di Windows PowerShell avviati tramite Start-Job o il parametro AsJob di qualsiasi cmdlet.

È possibile utilizzare questo cmdlet per eliminare tutti i processi o alcuni processi selezionati in base al nome, all'ID, all'ID istanza, al comando, allo stato o passando un oggetto processo a Remove-Job. Senza parametri o valori di parametro, Remove-Job non ha alcun effetto.

Prima di eliminare un processo in esecuzione, utilizzare il cmdlet Stop-Job per arrestare il processo. Se si tenta di eliminare un processo in esecuzione, il comando ha esito negativo. È possibile utilizzare il parametro Force di Remove-Job per eliminare un processo in esecuzione.

Se non si elimina un processo in background, quest'ultimo rimane nella cache del processo globale fino alla chiusura della sessione in cui è stato creato.

Parametri

-Command <string[]>

Rimuove i processi che includono le parole specificate nel comando.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Force

Elimina il processo anche se lo stato è "Running". Senza il parametro Force Remove-Job non eliminerà un processo in esecuzione.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Id <Int32[]>

Elimina i processi in background con gli ID specificati.

L'ID è un valore intero che identifica in modo univoco il processo all'interno della 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 processo, digitare "Get-Job" senza parametri.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-InstanceId <Guid[]>

Elimina i processi con gli ID istanza specificati.

Un ID istanza è un GUID che identifica in modo univoco il processo nel computer. Per trovare l'ID istanza di un processo, utilizzare Get-Job o visualizzare l'oggetto processo.

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Job <Job[]>

Specifica i processi da eliminare. Immettere una variabile che contiene i processi o un comando che consenta di ottenerli. È inoltre possibile utilizzare un operatore pipeline per inviare processi al cmdlet Remove-Job.

Obbligatorio?

true

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByValue, ByPropertyName)

Accettare caratteri jolly?

false

-Name <string[]>

Elimina solo i processi con i nomi descrittivi specificati. È consentito l'utilizzo di caratteri jolly.

Poiché non è garantito che il nome descrittivo sia univoco, anche all'interno della sessione, utilizzare i parametri WhatIf e Confirm in caso di eliminazione dei processi in base al nome.

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

true

-State <JobState>

Elimina solo i processi con lo stato specificato. I valori validi sono NotStarted, Running, Completed, Stopped, Failed e Blocked. Per eliminare i processi che presentano uno stato Running, utilizzare il parametro Force.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

true (ByPropertyName)

Accettare caratteri jolly?

false

-Confirm

Chiede una conferma prima di eseguire il comando.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-WhatIf

Descrive ciò che accadrebbe se si eseguisse il comando senza eseguirlo realmente.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

System.Management.Automation.Job

È possibile reindirizzare un oggetto processo a Remove-Job.

Output

Nessuno

Questo cmdlet non genera alcun output.

Esempio 1

C:\PS>$batch = get-job -name BatchJob

C:\PS> $batch | remove-job

Descrizione
-----------
Questi comandi eliminano un processo in background denominato BatchJob dalla sessione corrente. Il primo comando utilizza il cmdlet Get-Job per ottenere un oggetto che rappresenta il processo, quindi salva il processo nella variabile $batch. Il secondo comando utilizza un operatore pipeline (|) per inviare il processo al cmdlet Remove-Job.

Questo comando equivale all'utilizzo del parametro Job di Remove-Job, ad esempio, "remove-job -job $batch".






Esempio 2

C:\PS>get-job | remove-job

Descrizione
-----------
Questo comando elimina tutti i processi nella sessione corrente.






Esempio 3

C:\PS>remove-job -state NotStarted

Descrizione
-----------
Questo comando elimina tutti i processi della sessione corrente che non sono ancora stati avviati.






Esempio 4

C:\PS>remove-job -name *batch -force

Descrizione
-----------
Questo comando elimina tutti i processi con nomi descrittivi che terminano con "batch" dalla sessione corrente, compresi i processi in esecuzione. 

Utilizza il parametro Name di Remove-Job per specificare un modello di nome processo e il parametro Force per assicurarsi che tutti i processi vengano rimossi, anche quelli che potrebbero essere in corso.






Esempio 5

C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-process} -asJob

C:\PS> $j | remove-job

Descrizione
-----------
In questo esempio viene illustrato come utilizzare il cmdlet Remove-Job per rimuovere un processo avviato in un computer remoto tramite il parametro AsJob del cmdlet Invoke-Command.

Nel primo comando viene utilizzato il cmdlet Invoke-Command per eseguire un processo nel computer Server01. Viene utilizzato il parametro AsJob per eseguire il comando come processo in background e viene salvato l'oggetto processo risultante nella variabile $j.

Poiché il comando ha utilizzato il parametro AsJob, l'oggetto processo viene creato nel computer locale, anche se il processo viene eseguito in un computer remoto. Di conseguenza, vengono utilizzati comandi locali per gestire il processo.

Nel secondo comando viene utilizzato il cmdlet Remove-Job per rimuovere il processo. Viene utilizzato un operatore pipeline (|) per inviare il processo in $j a Remove-Job. Si noti che si tratta di un comando locale. Non è necessario un comando remoto per rimuovere un processo avviato tramite il parametro AsJob.






Esempio 6

C:\PS>$s = new-pssession -computername Server01

C:\PS> invoke-command -session $s -scriptblock {start-job -scriptblock {get-process} -name MyJob}

C:\PS> invoke-command -session $s -scriptblock {remove-job -name MyJob}

Descrizione
-----------
In questo esempio viene illustrato come rimuovere un processo avviato tramite Invoke-Command per eseguire un comando Start-Job. In questo caso, l'oggetto processo viene creato nel computer locale, in modo da poter utilizzare i comandi remoti per gestire il processo.

Nel primo comando viene utilizzato il cmdlet New-PSSession per creare una sessione PSSession (una connessione permanente) al computer Server01. Una connessione permanente è necessaria quando si esegue un comando Start-Job in modalità remota. La sessione PSSession viene salvata nella variabile $s.

Nel secondo comando viene utilizzato il cmdlet Invoke-Command per eseguire un comando Start-Job nella sessione PSSession in $s. Il processo esegue un comando Get-Process. Viene utilizzato il parametro Name di Start-Job per specificare un nome descrittivo per il processo.

Nel terzo comando viene utilizzato il cmdlet Invoke-Command per eseguire un comando Remove-Job nella sessione PSSession in $s. Il comando utilizza il parametro Name di Remove-Job per identificare il processo da eliminare.






Esempio 7

C:\PS>$j = start-job -script {get-process powershell}

C:\PS> $j | format-list -property *

C:\PS> remove-job -instanceID dce2ee73-f8c9-483e-bdd7-a549d8687eed

C:\PS> $j = start-job -script {get-process powershell}

C:\PS> $j | format-list -property *

HasMoreData   : False
StatusMessage :
Location      : localhost
Command       : get-process powershell
JobStateInfo  : Failed
Finished      : System.Threading.ManualResetEvent
InstanceId    : dce2ee73-f8c9-483e-bdd7-a549d8687eed
Id            : 1
Name          : Job1
ChildJobs     : {Job2}
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
StateChanged  :

C:\PS> remove-job -instanceID dce2ee73-f8c9-483e-bdd7-a549d8687eed

Descrizione
-----------
In questo esempio viene illustrato come rimuovere un processo in base al relativo ID istanza. 

Con il primo comando si utilizza il cmdlet Start-Job per avviare un processo in background. L'oggetto processo risultante viene salvato nella variabile $j.

Nel secondo comando viene utilizzato un operatore pipeline (|) per inviare l'oggetto processo in $j al comando Format-List. Il comando Format-List utilizza il parametro Property con un valore indicante tutti gli elementi (*) per visualizzare tutte le proprietà dell'oggetto processo in un elenco.

Nella visualizzazione dell'oggetto processo vengono indicati i valori delle proprietà ID e InstanceID, insieme alle altre proprietà dell'oggetto. 

Il terzo comando utilizza un comando Remove-Job per rimuovere il processo dalla sessione corrente. Per generare il comando, è possibile copiare e incollare il valore InstanceID dalla visualizzazione dell'oggetto. 

Per copiare un valore nella console di Windows PowerShell, utilizzare il mouse per selezionare il valore, quindi premere Invio per copiarlo. Per incollare un valore, fare clic con il pulsante destro del mouse su di esso.






Vedere anche




Argomenti della Guida