Share via


Remove-Job

Supprime un travail en arrière-plan PowerShell.

Syntax

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

Description

L’applet Remove-Job de commande supprime les travaux en arrière-plan PowerShell qui ont été démarrés par l’applet Start-Job de commande ou par des applets de commande telles Invoke-Command que celles qui prennent en charge le paramètre AsJob .

Vous pouvez utiliser Remove-Job pour supprimer tous les travaux ou supprimer des travaux sélectionnés. Les travaux sont identifiés par leur nom, ID, ID d’instance, commande ou état. Ou bien, un objet de travail peut être envoyé vers le bas du pipeline à Remove-Job. Sans paramètres ou valeurs de paramètre, Remove-Job n’a aucun effet.

Depuis PowerShell 3.0, Remove-Job peut supprimer des types de travaux personnalisés, tels que des travaux planifiés et des travaux de flux de travail. Par exemple, Remove-Job supprime le travail planifié, toutes les instances du travail planifié sur le disque et les résultats de toutes les instances de travail déclenchées.

Si vous essayez de supprimer un travail en cours d’exécution, Remove-Job échoue. Utilisez l’applet Stop-Job de commande pour arrêter un travail en cours d’exécution. Vous pouvez également utiliser Remove-Job avec le paramètre Force pour supprimer un travail en cours d’exécution.

Les travaux restent dans le cache de travaux global jusqu’à ce que vous supprimiez le travail en arrière-plan ou que vous fermiez la session PowerShell.

Exemples

Exemple 1 : Supprimer un travail à l’aide de son nom

Cet exemple utilise une variable et le pipeline pour supprimer un travail par nom.

$batch = Get-Job -Name BatchJob
$batch | Remove-Job

Get-Job utilise le paramètre Name pour spécifier le travail BatchJob. L’objet de travail est stocké dans la $batch variable . L’objet dans $batch est envoyé vers le bas du pipeline à Remove-Job.

Une alternative consiste à utiliser le paramètre Job , tel que Remove-Job -Job $batch.

Exemple 2 : Supprimer tous les travaux d’une session

Dans cet exemple, tous les travaux de la session PowerShell actuelle sont supprimés.

Get-job | Remove-Job

Get-Job obtient tous les travaux de la session PowerShell actuelle. Les objets de travail sont envoyés vers le bas du pipeline vers Remove-Job.

Exemple 3 : Supprimer les travaux Nondémarrés

Cet exemple supprime tous les travaux de la session PowerShell actuelle qui n’ont pas démarré.

Remove-Job -State NotStarted

Remove-Jobutilise le paramètre State pour spécifier le travail status.

Exemple 4 : Supprimer des travaux à l’aide d’un nom convivial

Cet exemple supprime tous les travaux de la session active avec des noms conviviaux qui se terminent par batch*, y compris les travaux en cours d’exécution.

Remove-Job -Name *batch -Force

Remove-Job utilise le paramètre Name pour spécifier un modèle de nom de travail. Le modèle inclut le caractère générique astérisque (*) pour rechercher tous les noms de travaux qui se terminent par lot. Le paramètre Force supprime les travaux en cours d’exécution.

Exemple 5 : Supprimer un travail créé par Invoke-Command

Cet exemple supprime un travail démarré sur un ordinateur distant à l’aide Invoke-Command du paramètre AsJob .

Étant donné que l’exemple utilise le paramètre AsJob , l’objet de travail est créé sur l’ordinateur local. Toutefois, le travail s’exécute sur un ordinateur distant. Par conséquent, vous utilisez des commandes locales pour gérer la tâche.

$job = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Process} -AsJob
$job | Remove-Job

Invoke-Command exécute un travail sur l’ordinateur Server01 . Le paramètre AsJob exécute le ScriptBlock en tant que travail en arrière-plan. L’objet de travail est stocké dans la $job variable . L’objet $job variable est envoyé vers le bas du pipeline à Remove-Job.

Exemple 6 : Supprimer un travail créé par Invoke-Command et Start-Job

Cet exemple montre comment supprimer un travail sur un ordinateur distant qui a été démarré à l’aide Invoke-Command de pour exécuter Start-Job. L’objet de travail est créé sur l’ordinateur distant et des commandes distantes sont utilisées pour gérer le travail. Une connexion persistante est requise lors de l’exécution d’une commande à distance Start-Job .

$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 crée une session PSSession, une connexion persistante, à l’ordinateur Server01 . La connexion est enregistrée dans la $S variable .

Invoke-Command se connecte à la session enregistrée dans $S. ScriptBlock utilise Start-Job pour démarrer un travail distant. Le travail exécute une Get-Process commande et utilise le paramètre Name pour spécifier un nom de travail convivial, MyJob.

Invoke-Command utilise la $S session et exécute Remove-Job. Le paramètre Name spécifie que le travail nommé MyJob est supprimé.

Exemple 7 : Supprimer un travail à l’aide de son InstanceId

Cet exemple supprime un travail en fonction de son 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 démarre un travail en arrière-plan et l’objet de travail est enregistré dans la $job variable .

L’objet dans $job est envoyé vers le bas du pipeline à Format-List. Le paramètre Property utilise un astérisque (*) pour spécifier que toutes les propriétés de l’objet sont affichées dans une liste.

Remove-Job utilise le paramètre InstanceId pour spécifier le travail à supprimer.

Paramètres

-Command

Supprime les tâches qui incluent les mots spécifiés dans la commande. Vous pouvez entrer un tableau séparé par des virgules.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

Vous invite à confirmer avant Remove-Job l’exécution.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Filter

Supprime les travaux qui répondent à toutes les conditions établies dans la table de hachage associée. Entrez une table de hachage où les clés sont les propriétés des travaux et les valeurs celles des propriétés des travaux.

Ce paramètre fonctionne uniquement sur les types de tâches personnalisées, tels que les tâches de workflow et les tâches planifiées. Il ne fonctionne pas sur les travaux en arrière-plan standard, tels que ceux créés à l’aide de Start-Job.

Ce paramètre est introduit dans PowerShell 3.0.

Type:Hashtable
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Force

Supprime un travail même si l’état du travail est En cours d’exécution. Si le paramètre Force n’est pas spécifié, Remove-Job ne supprime pas les travaux en cours d’exécution.

Type:SwitchParameter
Aliases:F
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Supprime les travaux en arrière-plan avec l’ID spécifié. Vous pouvez entrer un tableau séparé par des virgules. L’ID du travail est un entier unique qui identifie un travail dans la session active.

Pour rechercher l’ID d’un travail, utilisez Get-Job sans paramètres.

Type:Int32[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Supprime les travaux avec l’InstanceId spécifié. Vous pouvez entrer un tableau séparé par des virgules. Un InstanceId est un GUID unique qui identifie un travail.

Pour rechercher l’InstanceId d’un travail, utilisez Get-Job.

Type:Guid[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Job

Spécifie les tâches à supprimer. Entrez une variable qui contient les tâches ou tapez une commande permettant d'obtenir ces tâches. Vous pouvez entrer un tableau séparé par des virgules.

Vous pouvez envoyer des objets de travail dans le pipeline vers Remove-Job.

Type:Job[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Name

Supprime uniquement les travaux portant le nom convivial spécifié. Les caractères génériques sont autorisés. Vous pouvez entrer un tableau séparé par des virgules.

Il n’est pas garanti que les noms conviviaux des travaux soient uniques, même au sein d’une session PowerShell. Utilisez les paramètres WhatIf et Confirm lorsque vous supprimez des fichiers par nom.

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-State

Supprime uniquement les travaux avec l’état spécifié. Pour supprimer des travaux dont l’état est En cours d’exécution, utilisez le paramètre Force .

Valeurs acceptées :

  • AtBreakpoint
  • Bloqué
  • Effectué
  • Déconnecté
  • Failed
  • NotStarted
  • Exécution en cours
  • Arrêté
  • En cours d’arrêt
  • Interrompu
  • Suspension
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

Montre ce qui se passerait en cas Remove-Job d’exécution. L’applet de commande n’est pas exécutée.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Entrées

Job

Vous pouvez envoyer un objet de travail vers le bas du pipeline vers Remove-Job.

Sorties

None

Remove-Job ne génère aucune sortie.

Notes

Un travail PowerShell crée un processus. Une fois le travail terminé, le processus se termine. Quand Remove-Job est exécuté, l’état du travail est supprimé.

Si un travail s’arrête avant l’achèvement et que son processus n’est pas arrêté, le processus est arrêté de force.