Condividi tramite


Remove-Job

Elimina un processo in background di PowerShell.

Sintassi

Remove-Job
      [-Id] <Int32[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Job] <Job[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Name] <String[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-InstanceId] <Guid[]>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Remove-Job
      [-Filter] <Hashtable>
      [-Force]
      [-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

Job

È possibile inviare tramite pipe un oggetto Job a questo cmdlet.

Output

None

Questo cmdlet non restituisce output.

Note

Windows PowerShell include gli alias seguenti per Remove-Job:

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