about_Scheduled_Jobs_Advanced
Description courte
Décrit les rubriques avancées sur les tâches planifiées, y compris la structure de fichier sous-jacente aux tâches planifiées.
Description longue
Pour plus d’informations sur les applets de commande contenues dans le module PSScheduledJob , consultez PSScheduledJob.
Répertoires et fichiers de travaux planifiés
Les travaux planifiés PowerShell sont à la fois des travaux PowerShell et des tâches du planificateur de tâches. Chaque travail planifié est inscrit dans le Planificateur de tâches et enregistré sur disque au format XML de sérialisation microsoft .NET Framework.
Lorsque vous créez un travail planifié, PowerShell crée un répertoire pour la tâche planifiée dans le $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
répertoire sur l’ordinateur local. Le nom du répertoire est identique au nom du travail.
Voici un exemple de répertoire ScheduledJobs .
Get-ChildItem $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
Directory: C:\Users\User01\AppData\Local
\Microsoft\Windows\PowerShell\ScheduledJobs
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 9/29/2011 10:03 AM ArchiveProjects
d---- 9/30/2011 1:18 PM Inventory
d---- 10/20/2011 9:15 AM Backup-Scripts
d---- 11/7/2011 10:40 AM ProcessJob
d---- 11/2/2011 10:25 AM SecureJob
d---- 9/27/2011 1:29 PM Test-HelpFiles
d---- 9/26/2011 4:22 PM DeployPackage
Chaque travail planifié a son propre répertoire. Le répertoire contient le fichier XML du travail planifié et un sous-répertoire Output .
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell"
$Path += "\ScheduledJobs\ProcessJob"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/1/2011 3:00 PM Output
-a--- 11/1/2011 3:43 PM 7281 ScheduledJobDefinition.xml
Le répertoire de sortie d’un travail planifié contient son historique d’exécution. Chaque fois qu’un déclencheur de travail démarre un travail planifié, PowerShell crée un répertoire nommé timestamp dans le répertoire de sortie. Le répertoire timestamp contient les résultats du travail dans un fichier Results.xml et l’état du travail dans un fichier Status.xml .
La commande suivante montre les répertoires d’historique d’exécution du travail planifié ProcessJob .
$Path = "$HOME\AppData\Local\Microsoft"
$Path += "\Windows\PowerShell\ScheduledJobs\ProcessJob\Output"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft
\Windows\PowerShell\ScheduledJobs\ProcessJob\Output
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 11/2/2011 3:00 AM 20111102-030002-260
d---- 11/3/2011 3:00 AM 20111103-030002-277
d---- 11/4/2011 3:00 AM 20111104-030002-209
d---- 11/5/2011 3:00 AM 20111105-030002-251
d---- 11/6/2011 3:00 AM 20111106-030002-174
d---- 11/7/2011 12:00 AM 20111107-000001-914
d---- 11/7/2011 3:00 AM 20111107-030002-376
$Path = "$HOME\AppData\Local\Microsoft\Windows\PowerShell\"
$Path += "ScheduledJobs\ProcessJob\Output\20111102-030002-260"
Get-ChildItem $Path
Directory: C:\Users\User01\AppData\Local\Microsoft\Windows\PowerShell
\ScheduledJobs\ProcessJob\Output\20111102-030002-260
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 11/2/2011 3:00 AM 581106 Results.xml
-a--- 11/2/2011 3:00 AM 9451 Status.xml
Vous pouvez ouvrir et examiner les fichiers ScheduledJobDefinition.xml, Results.xml et Status.xml ou utiliser l’applet Select-XML
de commande pour analyser les fichiers.
Avertissement
Ne modifiez pas les fichiers XML. Si un fichier XML contient du code XML non valide, PowerShell supprime le travail planifié et son historique d’exécution, y compris les résultats du travail.
Démarrer un travail planifié immédiatement
Vous pouvez démarrer un travail planifié immédiatement de deux façons :
- Exécutez l’applet
Start-Job
de commande pour démarrer n’importe quel travail planifié. - Ajoutez le paramètre RunNow à votre
Register-ScheduledJob
commande pour démarrer le travail dès que la commande est exécutée.
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. La sortie du travail n’est pas enregistrée dans le répertoire Sortie du répertoire de travaux planifié.
La commande suivante utilise le paramètre DefinitionName de l’applet Start-Job
de commande pour démarrer le travail planifié ProcessJob.
Start-Job -DefinitionName ProcessJob
Pour gérer le travail et obtenir les résultats du travail, utilisez les applets de commande de travail. Pour plus d’informations sur les applets de commande de travail, consultez about_Jobs.
Remarque
Pour utiliser les applets de commande Job sur les instances de travaux planifiés, le module PSScheduledJob doit être importé dans la session. Pour importer le module PSScheduledJob , tapez Import-Module PSScheduledJob
ou utilisez n’importe quelle applet de commande de travail planifiée, telle que Get-ScheduledJob
.
Renommer un travail planifié
Pour renommer un travail planifié, utilisez le paramètre Name de l’applet Set-ScheduledJob
de commande. Lorsque vous renommez un travail planifié, PowerShell modifie le nom du travail planifié et le répertoire de travaux planifiés. Toutefois, il ne modifie pas les noms des instances du travail planifié qui ont déjà été exécutées.
Obtenir les heures de début et de fin
Pour obtenir les dates et les heures de démarrage et de fin des instances de travail, utilisez les propriétés PSBeginTime et PSEndTime de l’objet ScheduledJob qui Get-Job
retournent pour les travaux planifiés.
L’exemple suivant utilise le paramètre Property de l’applet Format-Table
de commande pour afficher les propriétés PSBeginTime et PSEndTime de chaque instance de travail dans une table. Une propriété calculée nommée Label affiche le temps écoulé de chaque instance de travail.
Get-job -Name UpdateHelpJob |
Format-Table -Property ID, PSBeginTime, PSEndTime,
@{Label="Elapsed Time";Expression={$.PsEndTime - $.PSBeginTime}}
Id PSBeginTime PSEndTime Elapsed Time
-- ----------- --------- ------------
2 11/3/2011 3:00:01 AM 11/3/2011 3:00:39 AM 00:00:38.0053854
3 11/4/2011 3:00:02 AM 11/4/2011 3:01:01 AM 00:00:59.1188475
4 11/5/2011 3:00:02 AM 11/5/2011 3:00:50 AM 00:00:48.3692034
5 11/6/2011 3:00:01 AM 11/6/2011 3:00:54 AM 00:00:52.8013036
6 11/7/2011 3:00:01 AM 11/7/2011 3:00:38 AM 00:00:37.1930350
7 11/8/2011 3:00:01 AM 11/8/2011 3:00:57 AM 00:00:56.2570556
8 11/9/2011 3:00:03 AM 11/9/2011 3:00:55 AM 00:00:51.8142222
9 11/10/2011 3:00:02 AM 11/10/2011 3:00:42 AM 00:00:40.7195954
Gérer l’historique d’exécution
Vous pouvez déterminer le nombre de résultats d’instance de travail enregistrés pour chaque travail planifié et supprimer l’historique d’exécution et enregistrer les résultats des travaux de n’importe quel travail planifié.
La propriété ExecutionHistoryLength d’un travail planifié détermine le nombre de résultats d’instance de travail enregistrés pour le travail planifié. Lorsque le nombre de résultats enregistrés dépasse la valeur de la propriété ExecutionHistoryLength , PowerShell supprime les résultats de l’instance la plus ancienne pour rendre place aux résultats de la dernière instance.
Par défaut, PowerShell enregistre l’historique d’exécution et les résultats de 32 instances de chaque travail planifié. Pour modifier cette valeur, utilisez les paramètres MaxResultCount des applets de commande ou Set-ScheduledJob
des applets de Register-ScheduledJob
commande.
Pour supprimer l’historique d’exécution et tous les résultats d’un travail planifié, utilisez le paramètre ClearExecutionHistory de l’applet Set-ScheduledJob
de commande. La suppression de cet historique d’exécution n’empêche pas PowerShell d’enregistrer les résultats des nouvelles instances du travail planifié.
L’exemple suivant utilise la mise en forme pour créer $JobParms
des valeurs de paramètre qui sont passées à l’applet Register-ScheduledJob
de commande. Pour plus d’informations, consultez about_Splatting.md.
Utilisations Register-ScheduledJob
@JobParms
pour créer un travail planifié. La commande utilise le paramètre MaxResultCount avec la valeur 12 pour enregistrer uniquement les 12 résultats de l’instance de travail la plus récente du travail planifié.
$JobParms = @{
Name = "ProcessJob"
ScriptBlock = {Get-Process}
MaxResultCount = "12"
}
Register-ScheduledJob @JobParms
La commande suivante utilise le paramètre MaxResultCount de l’applet Set-ScheduledJob
de commande pour augmenter le nombre de résultats d’instance enregistrés à 15.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15
La commande suivante supprime l’historique d’exécution et les résultats enregistrés actuels du travail planifié ProcessJob .
Get-ScheduledJob ProcessJob | Set-ScheduledJob -ClearExecutionHistory
La commande suivante obtient les valeurs des propriétés name et ExecutionHistoryLength de tous les travaux planifiés sur l’ordinateur et les affiche dans une table.
Get-ScheduledJob |
Format-Table -Property Name, ExecutionHistoryLength -AutoSize