4 votes

Comment planifier une tâche avec PowerShell pour s'exécuter toutes les heures, du lundi au vendredi entre 8 h et 18 h

Je dois planifier une tâche à exécuter:

  • Lundi au vendredi
  • Chaque heure de 8h à 18h

Je peux le faire à partir de l'interface graphique de planification de tâches habituelle, mais comme j'utilise un compte de service géré par groupe pour exécuter cette tâche, je dois le faire à partir de Powershell.

J'ai essayé d'utiliser les paramètres -RepetitionDuration et -RepetitionInterval dans la cmdlet New-ScheduledTaskTrigger, mais pour pouvoir les utiliser, j'ai besoin d'avoir le paramètre -once?

Veuillez me conseiller!

entrez la description de l'image ici

4voto

postanote Points 3762

Ceci est l'approche documentée par Microsoft pour aborder ce problème.

Remarque: Vous devez utiliser les options de réglage fournies dans les menus déroulants, même si l'interface graphique semble proposer des champs libres, ce n'est pas le cas.

Voir:

Configurer les paramètres avancés de la tâche planifiée en utilisant PowerShell

Les paramètres manquants

Super, maintenant nous avons un script, une tâche planifiée qui lance le script, et il s'exécutera à chaque fois que le serveur ou le poste de travail est démarré. Mais nous avons échoué à respecter l'une des exigences; la tâche doit également se répéter toutes les 10 minutes pendant 1 jour. Si vous essayez d'ajouter un intervalle de répétition ou une durée de répétition, vous remarquerez que ni l'un ni l'autre ne sont une option pour le paramètre -AtStartup:

À travers l'interface graphique, les paramètres de la tâche planifiée sont disponibles:

Mais ils ne sont pas disponibles via la cmdlet PowerShell New-ScheduledTaskTrigger si vous choisissez le paramètre -AtStartup. Ils sont disponibles via le paramètre -Once mais cela ne répondrait pas aux exigences. La solution est de modifier directement les propriétés de la tâche en utilisant son schéma XML. Cela peut sembler compliqué au début mais en réalité c'est très facile et vous permettra de modifier pratiquement tous les paramètres de la tâche planifiée.

Étape 1 - Obtenir la tâche planifiée. La première étape consiste à obtenir la tâche planifiée que vous venez de créer et à la stocker dans un objet.

$Task = Get-ScheduledTask -TaskName "SampleScheduledTask"

Étape 2 - Mettez à jour la propriété spécifique de la tâche que vous souhaitez modifier. Pour cet exemple, nous souhaitons ajouter une durée de répétition et un intervalle de répétition.

$Task.Triggers.Repetition.Duration = "P1D"
$Task.Triggers.Repetition.Interval = "PT10M"

Vous vous demandez probablement comment j'ai su que P1D correspondrait à une durée de 1 jour et comment j'ai su que PT10M correspondrait à un intervalle de répétition de 10 minutes puisque ce ne sont pas les valeurs de date/heure ou de temps habituelles avec lesquelles vous avez probablement l'habitude de travailler. Pour obtenir ces valeurs, j'ai simplement configuré la durée et l'intervalle que je voulais via l'interface graphique, puis j'ai consulté le résultat via Powershell en utilisant la commande suivante:

$Task.Triggers.Repetition | fl *

Étape 3 - Enregistrez la nouvelle configuration dans la tâche planifiée. N'oubliez pas, vous devez ressaisir les identifiants de la tâche ici sinon l'opération échouera.

$Task | Set-ScheduledTask -User "NT AUTHORITY\SYSTEM"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X