Condividi tramite


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

Job

È 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.