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

Job

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