À propos des travaux planifiés avancés
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
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 le disque au format XML de sérialisation Microsoft .NET Framework.
Lorsque vous créez un travail planifié, PowerShell crée un répertoire pour le travail planifié dans le $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
répertoire sur l’ordinateur local. Le nom du répertoire est le même que le 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 le travail status dans un fichier Status.xml.
La commande suivante montre les répertoires d’historique d’exécution pour le 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 fichiersScheduledJobDefinition.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 immédiatement un travail planifié
Vous pouvez démarrer un travail planifié immédiatement de l’une des deux manières suivantes :
- Exécutez l’applet
Start-Job
de commande pour démarrer un 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 aux 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 De sortie du répertoire du travail 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 du travail. Pour plus d’informations sur les applets de commande de travail, consultez about_Jobs.
Notes
Pour utiliser les applets de commande Job sur des 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 une 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 du travail planifié. 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 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
retourne 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 travail instance dans une table. Une propriété calculée nommée Label affiche le temps écoulé de chaque travail instance.
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 des exécutions
Vous pouvez déterminer le nombre de résultats de travail instance enregistrés pour chaque travail planifié et supprimer l’historique d’exécution et les résultats des travaux enregistrés de n’importe quel travail planifié.
La propriété ExecutionHistoryLength d’un travail planifié détermine le nombre de résultats 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 la instance la plus ancienne pour faire de la place pour les résultats de la instance la plus récente.
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 Register-ScheduledJob
commande ou Set-ScheduledJob
.
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 platissement pour créer $JobParms
des valeurs de paramètre qui sont passées à l’applet de Register-ScheduledJob
commande . Pour plus d’informations, consultez about_Splatting.md.
utilise 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 travaux les plus récents instance résultats 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 instance enregistrés à 15.
Get-ScheduledJob ProcessJob | Set-ScheduledJob -MaxResultCount 15
La commande suivante supprime l’historique des exécutions 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