À propos des travaux planifiés
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 de 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
et Stop-Job
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 en fonction des besoins, les exécuter ou les utiliser comme modèles, établir des planifications ponctuelles ou périodiques pour le démarrage des 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, ce qui fournit un journal en cours d’exécution de la sortie du travail. Les travaux planifiés sont fournis avec un ensemble personnalisé d’applets de commande pour leur gestion. Les applets de commande vous permettent de créer, modifier, gérer, désactiver et réactiver des travaux planifiés, des déclencheurs de travail et des options de travail.
Cet ensemble complet et flexible d’outils fait des 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 .
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.
Notes
Vous pouvez afficher et gérer les travaux planifiés PowerShell dans le Planificateur de tâches. Les travaux PowerShell et les applets de commande de travail planifiés fonctionnent uniquement sur les travaux planifiés qui sont créés dans PowerShell.
Démarrage rapide
Cet exemple crée un travail planifié qui commence tous les jours à 3h00 et exécute l’applet de Get-Process
commande. Le travail démarre même si l’ordinateur est en cours d’exécution sur batteries.
$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 remplacer la propriété StopIfGoingOnBatteries de ProcessJob par 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 ont été exécutées 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 de 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 des instance les plus récents du travail planifié ProcessJob (ID = 51).
Receive-Job -ID 51
Même si la Receive-Job
commande n’a pas inclus 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 toutes les tâches en arrière-plan, ces travaux démarrent immédiatement, ils ne sont pas soumis aux 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és.
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 des options de travail qui définissent des conditions d’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 les travaux planifiés à l’aide de Start-Job cmdlet
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, un instance de travail est créé. Utilisez les applets de commande de travail PowerShell pour afficher et gérer les 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 dans le 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 des travaux planifiés. 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 xml de travail planifié de chaque travail planifié auquel 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 liés entre eux, ce qui les rend faciles à découvrir et à utiliser dans des commandes et des scripts.
Les travaux planifiés s’affichent 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 du travail. Les objets ScheduledJobTriggers et ScheduledJobOptions qui représentent respectivement des déclencheurs de travail et des options de travail ont chacun 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é, ainsi que la recherche, le script et l’affichage du travail planifié auquel est associé un déclencheur de travail ou une option de travail.