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

Voir aussi