Gestion du Planificateur de tâches avec schtasks.exe

Vue d’ensemble

Cet article décrit comment gérer le Planificateur de tâches Windows à l’aide de l’outil en ligne de commande schtasks.exe, fourni par défaut avec Windows Server et les éditions clientes de Windows.

Tous les exemples supposent une exécution depuis PowerShell, en utilisant systématiquement l’accent grave (`) comme caractère de continuation de ligne.


Convention de variables

Nom de variable Exemple de valeur Description
<<SERVER_NAME>> WSRV2025 Nom du serveur cible
<<ADMIN_USER>> Administrator Compte utilisé pour exécuter la tâche
<<TASK_NAME>> DailyTempCleanup Nom de la tâche
<<SCRIPT_PATH>> C:\Maintenance\cleanup_temp.ps1 Script à exécuter
<<LOG_PATH>> C:\Maintenance\Logs Dossier de journaux
<<BACKUP_PATH>> C:\Maintenance\Backups Dossier de sauvegarde des journaux d’événements

À propos de la continuation de ligne en PowerShell et CMD

Les commandes présentées dans cet article sont prévues pour être exécutées dans PowerShell.

  • PowerShell : accent grave (`)
  • CMD : caret (^)

Exemple (PowerShell) :

schtasks.exe /Create `
  /TN "Example" `
  /SC DAILY `
  /ST 02:00 `
  /TR "powershell.exe -File example.ps1"

Step 1 : Vue d’ensemble des sous-commandes schtasks.exe

Sous-commande Utilisation
/Create Créer une nouvelle tâche
/Delete Supprimer une tâche
/Query Lister les tâches, afficher les détails, sortie XML
/Change Modifier la configuration d’une tâche
/Run Exécuter une tâche immédiatement
/End Arrêter une tâche en cours d’exécution
/ShowSid Afficher le SID du compte d’exécution

Step 2 : /Create – syntaxe de base et options principales

Step 2.1 Syntaxe générale

schtasks.exe /Create `
  /TN "<<TASK_NAME>>" `
  /TR "<<COMMANDE_A_EXÉCUTER>>" `
  /SC PLANIFICATION `
  [autres_options...]

Step 2.2 Options les plus utilisées

Option Contenu
/SC Type de planification (DAILY / WEEKLY / MONTHLY / ONLOGON / ONEVENT)
/MO Modificateur
/ST HH:mm Heure de début
/D Jour d’exécution (1–31 ou MON/TUE…)
/RU Compte utilisé pour exécuter la tâche
/RP Mot de passe (* pour saisie interactive)
/RL HIGHEST Exécution avec privilèges élevés
/F Forcer l’écrasement d’une tâche existante

À propos de /MO (modificateur)
Paramètre qui affine la fréquence ou la position de l’exécution dans la planification.

Exemples :

  • Toutes les 3 heures → /SC HOURLY /MO 3
  • Toutes les 2 semaines → /SC WEEKLY /MO 2
  • Deuxième mercredi du mois → /SC MONTHLY /MO SECOND /D WED
  • Déclenchement sur événement → /SC ONEVENT /MO [XPath]

Step 2.3 Liste des valeurs possibles pour /SC

/SC Description
DAILY Quotidien
WEEKLY Hebdomadaire
MONTHLY Mensuel
ONCE Une seule fois
ONSTART Au démarrage du système
ONLOGON À l’ouverture de session
ONIDLE Lorsque le système est inactif
ONEVENT Lorsqu’un événement est consigné dans le journal

Step 2.4 Tâche quotidienne

schtasks.exe /Create `
  /TN "DailyTempCleanup" `
  /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\Maintenance\cleanup_temp.ps1 -DaysToKeep 7 -LogPath <<LOG_PATH>>" `
  /SC DAILY `
  /ST 02:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.5 Exécution à l’ouverture de session (ONLOGON)

schtasks.exe /Create `
  /TN "OnLogonAudit" `
  /SC ONLOGON `
  /TR "powershell.exe -File C:\Scripts\logon_audit.ps1" `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.6 Exécution au démarrage (ONSTART)

schtasks.exe /Create `
  /TN "OnStartInit" `
  /SC ONSTART `
  /TR "powershell.exe -File C:\Scripts\startup_init.ps1" `
  /RU "SYSTEM" `
  /RL HIGHEST `
  /F

Step 2.7 Déclenchement basé sur le journal d’événements (ONEVENT)

schtasks.exe /Create `
  /TN "Event101Handler" `
  /SC ONEVENT `
  /EC System `
  /MO "*[System/EventID=101]" `
  /TR "powershell.exe -File C:\Scripts\event_handler.ps1" `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.8 Exécution toutes les 3 heures

schtasks.exe /Create `
  /TN "Every3Hours" `
  /TR "powershell.exe -File script.ps1" `
  /SC HOURLY `
  /MO 3 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.9 Deuxième mercredi de chaque mois

schtasks.exe /Create `
  /TN "SecondWednesdayTask" `
  /TR "powershell.exe -File task.ps1" `
  /SC MONTHLY `
  /MO SECOND `
  /D WED `
  /ST 03:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.10 Dernier jour du mois (LASTDAY)

schtasks.exe /Create `
  /TN "LastDayMonthly" `
  /TR "powershell.exe -File script.ps1" `
  /SC MONTHLY `
  /MO LASTDAY `
  /M * `
  /ST 01:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 2.11 Toutes les 2 semaines

schtasks.exe /Create `
  /TN "Every2Weeks" `
  /TR "powershell.exe -File script.ps1" `
  /SC WEEKLY `
  /MO 2 `
  /D MON `
  /ST 05:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Step 3 : /Query – liste et détails

Option Description
/FO TABLE Sortie au format tableau
/FO LIST Sortie sous forme de liste par champs
/V Inclut des informations détaillées (déclencheurs, actions, etc.)
/TN "<<TASK_NAME>>" Afficher uniquement la tâche spécifiée
schtasks.exe /Query /FO TABLE
schtasks.exe /Query /FO LIST /V
schtasks.exe /Query /TN "<<TASK_NAME>>" /FO LIST /V

Step 4 : /Change – modification d’une tâche

Option Description
/TN Nom de la tâche
/RU Changer le compte d’exécution
/RP * Saisie interactive du nouveau mot de passe
/TR Remplacer la commande de lancement
/ENABLE /DISABLE Activer / désactiver la tâche

Attention : avec /Change, il est impossible de modifier la définition du déclencheur (/SC, /MO, /D, /M).
Pour changer la planification, il est plus sûr de supprimer la tâche avec /Delete, puis de la recréer avec /Create.

Changer le compte d’exécution

schtasks.exe /Change `
  /TN "<<TASK_NAME>>" `
  /RU "<<ADMIN_USER>>" `
  /RP *

Modifier la commande de lancement

schtasks.exe /Change `
  /TN "<<TASK_NAME>>" `
  /TR "powershell.exe -File <<SCRIPT_PATH>> -LogPath <<LOG_PATH>>"

Activer / désactiver la tâche

schtasks.exe /Change /TN "<<TASK_NAME>>" /ENABLE
schtasks.exe /Change /TN "<<TASK_NAME>>" /DISABLE

Step 5 : /Run (exécution immédiate) et /End (arrêt)

Option Description
/Run Exécuter immédiatement la tâche
/I Ignorer les contraintes de planification (date de début/fin, etc.)
/End Arrêter la tâche en cours d’exécution
/TN Nom de la tâche cible
schtasks.exe /Run /TN "<<TASK_NAME>>"
schtasks.exe /Run /TN "<<TASK_NAME>>" /I

schtasks.exe /End /TN "<<TASK_NAME>>"

Step 6 : Importer une tâche à partir de XML

Import XML

Option Description
/XML fichier Créer une tâche à partir d’une définition XML
/RU Remplacer le compte d’exécution
/RP * Saisie interactive du mot de passe
schtasks.exe /Create `
  /TN "<<TASK_NAME>>" `
  /XML "C:\TaskTemplates\<<TASK_NAME>>.xml" `
  /RU "<<ADMIN_USER>>" `
  /RP *

Export XML (via Query)

Option Description
/XML ONE Exporter la définition de la tâche dans un seul XML
> fichier Rediriger la sortie vers un fichier
schtasks.exe /Query `
  /TN "<<TASK_NAME>>" `
  /XML ONE `
  > C:\TaskTemplates\<<TASK_NAME>>.xml

Step 8 : /Delete – suppression d’une tâche

Option Description
/Delete Mode suppression
/TN Nom de la tâche
/F Supprimer sans demande de confirmation
schtasks.exe /Delete /TN "<<TASK_NAME>>" /F

Step 9 : /ShowSid – afficher le SID du compte d’exécution

Option Description
/ShowSid Afficher le SID associé au compte d’exécution de la tâche
/TN Nom de la tâche
schtasks.exe /ShowSid /TN "<<TASK_NAME>>"

Step 10 : Gestion des tâches sur un serveur distant

Option Description
/S "<<SERVER_NAME>>" Nom du serveur distant
/U Compte utilisateur pour la connexion distante
/P * Mot de passe pour le compte distant (* pour saisie interactive)
Autres Définition de la tâche identique au cas local
schtasks.exe /Create `
  /S "<<SERVER_NAME>>" `
  /U "<<ADMIN_USER>>" `
  /P * `
  /TN "<<TASK_NAME>>" `
  /TR "powershell.exe -File <<SCRIPT_PATH>>" `
  /SC DAILY `
  /ST 02:00 `
  /RU "<<ADMIN_USER>>" `
  /RL HIGHEST `
  /F

Conclusion

L’utilisation de schtasks.exe facilite l’intégration du Planificateur de tâches dans les scénarios de déploiement et d’automatisation opérationnelle.

  • La combinaison de /SC et /MO permet de définir des planifications flexibles (quotidiennes, hebdomadaires, mensuelles, « nième jour de la semaine », dernier jour du mois).
  • Les déclencheurs ONLOGON, ONSTART et ONEVENT permettent une automatisation pilotée par les événements.
  • Avec /Query /XML et /Create /XML, il est possible d’exporter et de réimporter des définitions de tâches sous forme de modèles XML réutilisables.
  • Les commandes /Change, /Run, /End, /Delete et /ShowSid couvrent tout le cycle de vie d’administration des tâches.
  • Grâce à /S /U /P, les mêmes définitions peuvent être déployées facilement sur plusieurs serveurs distants.