Partager via


Stop-Job

Arrête un travail en arrière-plan PowerShell.

Syntaxe

Stop-Job
    [-PassThru]
    [-Id] <Int32[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-Job] <Job[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-Name] <String[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-InstanceId] <Guid[]>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-State] <JobState>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]
Stop-Job
    [-PassThru]
    [-Filter] <Hashtable>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

L’applet Stop-Job de commande arrête les travaux en arrière-plan PowerShell en cours. Vous pouvez utiliser cette applet de commande pour arrêter tous les travaux ou arrêter les travaux sélectionnés en fonction de leur nom, ID, ID d’instance ou état, ou en transmettant un objet de travail à Stop-Job.

Vous pouvez utiliser Stop-Job pour arrêter les travaux en arrière-plan, tels que ceux qui ont été démarrés à l’aide de l’applet Start-Job de commande ou du paramètre AsJob de n’importe quelle applet de commande. Lorsque vous arrêtez un travail en arrière-plan, PowerShell termine toutes les tâches en attente dans cette file d’attente de travaux, puis met fin au travail. Aucune nouvelle tâche n'est ajoutée à la file d'attente après que cette commande a été soumise.

Cette applet de commande ne supprime pas les tâches en arrière-plan. Pour supprimer un travail, utilisez l’applet de Remove-Job commande.

À compter de Windows PowerShell 3.0, Stop-Job arrête également les types de travaux personnalisés, tels que WorkflowJobs et les instances de ScheduledJobs. Pour activer Stop-Job l’arrêt d’un travail avec un type de travail personnalisé, importez le module qui prend en charge le type de travail personnalisé dans la session avant d’exécuter une Stop-Job commande, soit à l’aide de l’applet Import-Module de commande, soit en utilisant ou en obtenant une applet de commande dans le module. Pour plus d'informations sur un type de tâche personnalisé particulier, consultez la documentation sur la fonctionnalité de type de tâche personnalisé.

Exemples

Exemple 1 : Arrêter un travail sur un ordinateur distant avec Invoke-Command

$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }

Cet exemple montre comment utiliser l’applet Stop-Job de commande pour arrêter un travail en cours d’exécution sur un ordinateur distant.

Étant donné que le travail a été démarré avec l’applet Invoke-Command de commande pour exécuter une Start-Job commande à distance, l’objet de travail est stocké sur l’ordinateur distant. Vous devez utiliser une autre Invoke-Command commande pour exécuter une Stop-Job commande à distance. Pour plus d'informations sur les tâches distantes en arrière-plan, consultez about_Remote_Jobs.

La première commande crée une session PowerShell (PSSession) sur l’ordinateur Server01, puis stocke l’objet de session dans la $s variable. La commande utilise les informations d'identification d'un administrateur de domaine.

La deuxième commande utilise l’applet Invoke-Command de commande pour exécuter une Start-Job commande dans la session. La commande qui figure dans la tâche obtient tous les événements du journal d'événements système. L’objet de travail résultant est stocké dans la $j variable.

La troisième commande arrête la tâche. Il utilise l’applet Invoke-Command de commande pour exécuter une Stop-Job commande dans PSSession sur Server01. Étant donné que les objets de travail sont stockés dans $j, qui est une variable sur l’ordinateur local, la commande utilise le modificateur d’étendue Using pour identifier $j comme variable locale. Pour plus d’informations sur le modificateur d’étendue Using , consultez about_Remote_Variables.

Une fois la commande terminée, le travail est arrêté et la session PSSession $s est disponible pour être utilisée.

Exemple 2 : Arrêter un travail en arrière-plan

Stop-Job -Name "Job1"

Cette commande arrête le Job1 travail en arrière-plan.

Exemple 3 : Arrêter plusieurs travaux en arrière-plan

Stop-Job -Id 1, 3, 4

Cette commande arrête trois tâches. Il les identifie par leurs ID.

Exemple 4 : Arrêter tous les travaux en arrière-plan

Get-Job | Stop-Job

Cette commande arrête toutes les tâches en arrière-plan dans la session active.

Exemple 5 : Arrêter tous les travaux en arrière-plan bloqués

Stop-Job -State Blocked

Cette commande arrête toutes les tâches qui sont bloquées.

Exemple 6 : Arrêter un travail par ID d’instance

Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceID -Auto

Id Name Command                 State  InstanceId
-- ---- -------                 -----  ----------
1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 get-service s*         Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf

Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf

Ces commandes montrent comment arrêter un travail en fonction de son INSTANCEID.

La première commande utilise l’applet Get-Job de commande pour obtenir les travaux dans la session active. La commande utilise un opérateur de pipeline (|) pour envoyer les travaux à une Format-Table commande, qui affiche une table des propriétés spécifiées de chaque travail. La table inclut l’ID d’instance de chaque travail. Elle utilise une propriété calculée pour afficher l'état de la tâche.

La deuxième commande utilise une Stop-Job commande qui a le paramètre InstanceID pour arrêter un travail sélectionné.

Exemple 7 : Arrêter un travail sur un ordinateur distant

$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru

Id    Name    State      HasMoreData     Location         Command
--    ----    ----       -----------     --------         -------
5     Job5    Stopped    True            user01-tablet    Get-EventLog -LogName Sy...

Cet exemple montre comment utiliser l’applet Stop-Job de commande pour arrêter un travail en cours d’exécution sur un ordinateur distant.

Étant donné que le travail a été démarré avec le paramètre AsJob de l’applet Invoke-Command de commande, l’objet Job se trouve sur l’ordinateur local, même si le travail s’exécute sur l’ordinateur distant. Par conséquent, vous pouvez utiliser une commande locale Stop-Job pour arrêter le travail.

La première commande utilise l’applet Invoke-Command de commande pour démarrer un travail en arrière-plan sur l’ordinateur Server01. La commande utilise le paramètre AsJob pour exécuter la commande distante en tant que travail en arrière-plan.

Cette commande retourne un objet de travail, qui est le même objet de travail que l’applet Start-Job de commande. La commande enregistre l’objet de travail dans la $j variable.

La deuxième commande utilise un opérateur de pipeline pour envoyer le travail dans la $j variable à Stop-Job. La commande utilise le paramètre PassThru pour diriger Stop-Job pour retourner un objet de travail. L’affichage de l’objet de travail confirme que l’état du travail est Arrêté.

Pour plus d’informations sur les travaux en arrière-plan distants, consultez about_Remote_Jobs.

Paramètres

-Confirm

Vous demande une confirmation avant d’exécuter l’applet de commande.

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Filter

Spécifie une table de conditions de hachage. Cette applet de commande arrête les travaux qui répondent à chaque condition. 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 travaux personnalisés, tels que WorkflowJobs et ScheduledJobs. Elle ne fonctionne pas sur les travaux en arrière-plan standard, tels que ceux créés à l’aide de l’applet de Start-Job commande. Pour plus d'informations sur la prise en charge de ce paramètre, consultez la rubrique d'aide relative au type de tâche.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Type:Hashtable
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Id

Spécifie les ID des travaux arrêtés par cette applet de commande. La valeur par défaut est toutes les tâches dans la session active.

L’ID est un entier qui identifie de façon unique le travail dans la session active. Il est plus facile de mémoriser et de taper que l’ID d’instance, mais il est unique uniquement dans la session active. Vous pouvez taper un ou plusieurs ID, séparés par des virgules. Pour rechercher l’ID d’un travail, tapez Get-Job.

Type:Int32[]
Position:0
Valeur par défaut:All jobs
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-InstanceId

Spécifie les ID d’instance des travaux arrêtés par cette applet de commande. Par défaut, il s'agit de toutes les tâches.

Un ID d'instance est un GUID qui identifie de façon unique la tâche sur l'ordinateur. Pour rechercher l’ID d’instance d’un travail, utilisez Get-Job.

Type:Guid[]
Position:0
Valeur par défaut:All jobs
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Job

Spécifie les travaux arrêtés par cette applet de commande. Entrez une variable qui contient les tâches ou tapez une commande permettant d'obtenir ces tâches. Vous pouvez également utiliser un opérateur de pipeline pour envoyer des travaux à l’applet de Stop-Job commande. Par défaut, Stop-Job supprime tous les travaux démarrés dans la session active.

Type:Job[]
Position:0
Valeur par défaut:All jobs
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-Name

Spécifie les noms conviviaux des travaux arrêtés par cette applet de commande. Entrez les noms des travaux dans une liste séparée par des virgules ou utilisez des caractères génériques (*) pour entrer un modèle de nom de travail. Par défaut, Stop-Job arrête tous les travaux créés dans la session active.

Étant donné que le nom convivial n’est pas garanti comme unique, utilisez les paramètres WhatIf et Confirm lors de l’arrêt des travaux par nom.

Type:String[]
Position:0
Valeur par défaut:All jobs
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:True

-PassThru

Retourne un objet représentant l’élément que vous utilisez. Par défaut, cette applet de commande ne génère aucun résultat.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-State

Spécifie un état de travail. Cette applet de commande arrête uniquement les travaux dans l’état spécifié. Les valeurs valides pour ce paramètre sont :

  • NotStarted
  • Running
  • Completed
  • Failed
  • Stopped
  • Blocked
  • Suspended
  • Disconnected
  • Suspending
  • Stopping

Pour plus d’informations sur les états de travail, consultez Énumération JobState.

Type:JobState
Valeurs acceptées:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
Position:0
Valeur par défaut:All jobs
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-WhatIf

Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.

Type:SwitchParameter
Alias:wi
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

System.Management.Automation.RemotingJob

Vous pouvez diriger un objet de travail vers cette applet de commande.

Sorties

None

Par défaut, cette applet de commande ne retourne aucune sortie.

System.Management.Automation.PSRemotingJob

Lorsque vous utilisez le paramètre PassThru , cette applet de commande retourne un objet de travail.

Notes

Windows PowerShell inclut les alias suivants pour Stop-Job:

  • spjb