about_Scheduled_Jobs
Description courte
Décrit les travaux planifiés et explique comment utiliser et gérer des travaux planifiés dans PowerShell et dans le Planificateur de tâches.
Description longue
Les travaux planifiés PowerShell sont un hybride utile des travaux en arrière-plan PowerShell et des tâches du planificateur de tâches.
Comme les travaux en arrière-plan PowerShell, les travaux planifiés s’exécutent de manière asynchrone en arrière-plan. Les instances des travaux planifiés qui ont été exécutés peuvent être gérées à l’aide des applets de commande de travail, telles que Start-Job
, , Get-Job
Stop-Job
et Receive-Job
.
Comme les tâches du planificateur de tâches, les travaux planifiés sont enregistrés sur le disque. Vous pouvez afficher et gérer les travaux dans le Planificateur de tâches, les activer et les désactiver si nécessaire, les exécuter ou les utiliser en tant que modèles, établir des planifications ponctuelles ou périodiques pour démarrer les travaux ou définir des conditions dans lesquelles les travaux démarrent.
En outre, les résultats des instances de travail planifiées sont enregistrés sur le disque dans un format facilement accessible, fournissant un journal en cours d’exécution de sortie de travail. Les travaux planifiés sont fournis avec un ensemble personnalisé d’applets de commande pour les gérer. Les applets de commande vous permettent de créer, de modifier, de gérer, de désactiver et de réactiver les travaux planifiés, les déclencheurs de travail et les options de travail.
Cet ensemble complet et flexible d’outils rend les travaux planifiés un composant essentiel de nombreuses solutions informatiques PowerShell professionnelles.
Les applets de commande de travail planifiées sont incluses dans le module PSScheduledJob installé avec PowerShell. Ce module a été introduit dans PowerShell 3.0 et fonctionne dans PowerShell 3.0 et versions ultérieures de PowerShell. Pour plus d’informations sur les applets de commande contenues dans le module PSScheduledJob , consultez PSScheduledJob.
Pour plus d’informations sur les travaux en arrière-plan PowerShell, consultez about_Jobs.
Pour plus d’informations sur le planificateur de tâches, consultez Planificateur de tâches.
Remarque
Vous pouvez afficher et gérer des travaux planifiés PowerShell dans le Planificateur de tâches. Les travaux PowerShell et les applets de commande de travail planifiées fonctionnent uniquement sur les travaux planifiés créés dans PowerShell.
Démarrage rapide
Cet exemple crée un travail planifié qui démarre tous les jours à 3 h 00 et exécute l’applet Get-Process
de commande. Le travail démarre même si l’ordinateur est en cours d’exécution sur des piles.
$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options
L’applet Get-ScheduledJob
de commande obtient les travaux planifiés sur l’ordinateur local.
Get-ScheduledJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
Get-JobTrigger
obtient les déclencheurs de travail de ProcessJob. Les paramètres d’entrée spécifient le travail planifié, et non le déclencheur, car les déclencheurs sont enregistrés dans un travail planifié.
Get-JobTrigger -Name ProcessJob
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 11/5/2011 3:00:00 AM True
Cet exemple utilise le paramètre ContinueIfGoingOnBattery de l’applet Set-ScheduledJob
de commande pour modifier la propriété StopIfGoingOnBatteries de ProcessJob sur False.
Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -PassThru
StartIfOnBatteries : True
StopIfGoingOnBatteries : False
WakeToRun : True
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : IgnoreNew
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
L’applet Get-ScheduledJob
de commande obtient le travail planifié ProcessJob .
Get-ScheduledJob ProcessJob
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
7 ProcessJob {1} Get-Process True
L’applet Get-Job
de commande obtient toutes les instances du travail planifié ProcessJob qui s’exécutent jusqu’à présent. L’applet Get-Job
de commande obtient des travaux planifiés uniquement lorsque le module PSScheduledJob est importé dans la session active.
Conseil
Notez que vous utilisez les applets de commande de travail planifiées pour gérer les travaux planifiés, mais que vous utilisez les applets de commande de travail pour gérer les instances des travaux planifiés.
Get-Job -Name ProcessJob
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------ ----- ----------- -------- -------
45 ProcessJob PSScheduledJob Completed True localhost Get-Process
46 ProcessJob PSScheduledJob Completed True localhost Get-Process
47 ProcessJob PSScheduledJob Completed True localhost Get-Process
48 ProcessJob PSScheduledJob Completed True localhost Get-Process
49 ProcessJob PSScheduledJob Completed True localhost Get-Process
50 ProcessJob PSScheduledJob Completed True localhost Get-Process
51 ProcessJob PSScheduledJob Completed True localhost Get-Process
L’applet Receive-Job
de commande obtient les résultats de l’instance la plus récente du travail planifié ProcessJob (ID = 51).
Receive-Job -ID 51
Même si la Receive-Job
commande n’incluait pas le paramètre Keep , les résultats du travail sont enregistrés sur le disque jusqu’à ce que vous les supprimiez ou que le nombre maximal de résultats soit dépassé.
Les résultats du travail ne sont plus disponibles dans cette session, mais si vous démarrez une nouvelle session ou ouvrez une nouvelle fenêtre PowerShell, les résultats du travail sont à nouveau disponibles.
La commande suivante utilise le paramètre DefinitionName de l’applet Start-Job
de commande pour démarrer le travail planifié ProcessJob .
Les travaux démarrés à l’aide de l’applet Start-Job
de commande sont des travaux en arrière-plan PowerShell standard, et non des instances du travail planifié. Comme tous les travaux en arrière-plan, ces travaux démarrent immédiatement, ils ne sont pas soumis à des options de travail ou affectés par des déclencheurs de travail, et leur sortie n’est pas enregistrée dans le répertoire de sortie du répertoire de travaux planifié.
Start-Job -DefinitionName ProcessJob
L’applet Unregister-ScheduledJob
de commande supprime le travail planifié ProcessJob et tous les résultats enregistrés de ses instances de travail.
Unregister-ScheduledJob ProcessJob
Concepts des travaux planifiés
Un travail planifié exécute des commandes ou un script. Un travail planifié peut inclure des déclencheurs de travail qui démarrent le travail et les options de travail qui définissent des conditions pour l’exécution du travail.
Un déclencheur de travail démarre automatiquement un travail planifié. Un déclencheur de travail peut inclure une planification ponctuelle ou périodique ou spécifier un événement, par exemple lorsqu’un utilisateur se connecte ou démarre Windows. Un travail planifié peut avoir un ou plusieurs déclencheurs de travail, et vous pouvez créer, ajouter, activer, désactiver et obtenir des déclencheurs de travail.
Les déclencheurs de tâche sont facultatifs. Vous pouvez démarrer immédiatement des travaux planifiés à l’aide du Start-Job cmdlet
paramètre RunNow ou en ajoutant le paramètre RunNow à votre Register-ScheduledJob
commande.
Les options de travail définissent les conditions d’exécution d’un travail planifié. Chaque travail planifié a un objet d’options de travail. Vous pouvez créer et modifier des objets d’options de travail et les ajouter à un ou plusieurs travaux planifiés.
Chaque fois qu’un travail planifié démarre, une instance de travail est créée. Utilisez les applets de commande de travail PowerShell pour afficher et gérer l’instance de travail.
Les travaux planifiés sont enregistrés sur le disque et utilisent le verbe d’applet de commande, Register
au lieu de New
. Les fichiers XML se trouvent sur l’ordinateur local du répertoire $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
.
PowerShell crée un répertoire pour chaque travail planifié et enregistre les commandes de travail, les déclencheurs de travail, les options de travail et les résultats du travail dans le répertoire de travaux planifié. Les déclencheurs de travail et les options de travail ne sont pas enregistrés sur le disque indépendamment. Ils sont enregistrés dans le code XML du travail planifié de chaque travail planifié avec lequel ils sont associés.
Les travaux planifiés, les déclencheurs de travail et les options de travail s’affichent dans PowerShell en tant qu’objets. Les objets sont entrelacés, ce qui les rend faciles à découvrir et à utiliser dans les commandes et les scripts.
Les travaux planifiés apparaissent en tant qu’objets ScheduledJobDefinition . L’objet ScheduledJobDefinition a une propriété JobTriggers qui contient les déclencheurs de travail du travail planifié et une propriété Options qui contient les options de travail. Les objets ScheduledJobTriggers et ScheduledJobOptions qui représentent les déclencheurs de travail et les options de travail, respectivement, ont chacune une propriété JobDefinition qui contient le travail planifié auquel ils sont associés. Cette interconnexion récursive facilite la recherche des déclencheurs et des options d’un travail planifié et la recherche, le script et l’affichage du travail planifié auquel tout déclencheur de travail ou option de travail est associé.