J'ai un script PowerShell qui envoie des emails. Je veux exécuter ce script automatiquement, toutes les 1 minute. Comment puis-je le faire en utilisant le planificateur de tâches?
Actuellement, j'ai créé une tâche et fourni le chemin de mon script. Mais ce planificateur ouvre mon script, au lieu de l’exécuter.
Créez la tâche planifiée et définissez l'action sur:
Programme/Script: Powershell.exe
Arguments: -File "C:\Users\MyUser\Documents\ThisisMyFile.ps1"
Voici un exemple utilisant PowerShell 3.0 ou 4.0 pour -RepeatIndefinitely
et jusqu'à:
# Trigger
$middayTrigger = New-JobTrigger -Daily -At "12:40 AM"
$midNightTrigger = New-JobTrigger -Daily -At "12:00 PM"
$atStartupeveryFiveMinutesTrigger = New-JobTrigger -once -At $(get-date) -RepetitionInterval $([timespan]::FromMinutes("1")) -RepeatIndefinitely
# Options
$option1 = New-ScheduledJobOption –StartIfIdle
$scriptPath1 = 'C:\Path and file name 1.PS1'
$scriptPath2 = "C:\Path and file name 2.PS1"
Register-ScheduledJob -Name ResetProdCache -FilePath $scriptPath1 -Trigger $middayTrigger,$midNightTrigger -ScheduledJobOption $option1
Register-ScheduledJob -Name TestProdPing -FilePath $scriptPath2 -Trigger $atStartupeveryFiveMinutesTrigger
Au lieu d'utiliser uniquement le chemin d'accès à votre script dans le planificateur de tâches, vous devez démarrer PowerShell avec votre script dans le planificateur de tâches, par exemple.
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NonInteractive -File "C:\Path\To\Your\PS1File.ps1"
Voir powershell /?
pour une explication de ces commutateurs.
Si vous avez toujours des problèmes, vous devriez lire cette question .
Dans mon cas, mon script a des paramètres, alors j'ai défini:
Arguments: -Command "& C:\scripts\myscript.ps1 myParam1 myParam2"
Vous pouvez utiliser la cmdlet Unblock-File pour débloquer l'exécution de ce script spécifique. Cela vous empêche de faire des changements de politique permanents que vous ne voudrez peut-être pas pour des raisons de sécurité.
Unblock-File path_to_your_script
Source: nblock-File
Après plusieurs heures de test et de recherche sur Internet, j'ai enfin trouvé comment démarrer mon script PowerShell avec un planificateur de tâches, grâce à la vidéo Planification d'un script PowerShell à l'aide de Windows Task Planificateur de Jack Fruh @sharepointjack.
Programme/script -> mettre le chemin complet à travers powershell.exe
C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
Ajouter des arguments -> Chemin complet du script, et le script, sans "".
Démarrer dans (facultatif) -> Le répertoire dans lequel réside votre script, sans "".