1

J'utilise PowerShell pour télécharger des données à partir d'un courrier électronique.Exécution de PowerShell dans le planificateur de tâches

Je veux exécuter ce processus par PowerShell. Quand je lance le script comme ceci:

D:\script.ps1 

en powershell.exe il fonctionne très bien. Lorsque je le planifie dans le planificateur de tâches, rien ne se passe.

Je l'ai essayé de le mettre comme programme/script:

powershell 
Powershell.exe 
powershell.exe 

Ajouter arguments:

-executionpolicy bypass -file D:\script.ps1 
-file D:\script.ps1 
-file "D:\script.ps1" 

Et rien ne fonctionne. J'utilise Windows 2008 R2.

+0

ws 2008 (pas r2)? srsly, comment est-il difficile de spécifier correctement le nom de l'OS? – 4c74356b41

+0

@ 4c74356b41 lorsque vous utilisez 4 réseaux différents en même temps, cela peut arriver facilement: D – HeadOverFeet

+0

est-ce que Powerhell démarre? Je suppose que c'est soit une erreur de chemin ou une politique d'exécution, mais c'est difficile à dire à partir de votre question telle qu'elle est maintenant. Essayer (1) ajouter l'indicateur '-noexit' devrait vous aider à voir le message d'erreur s'il y en a et (2) spécifier le chemin complet vers powershell e.g. 'C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe' – LudvigH

Répondre

3

Dépannage des tâches planifiées est une douleur à l'arrière, car vous ne pouvez pas vraiment voir ce qui se passe. Voici quelques éléments que vous pouvez vouloir vérifier:

  • Vérifiez que votre ligne de commande fonctionne en principe, par ex. en l'exécutant depuis CMD (dans votre cas, essayez d'exécuter powershell.exe -File "D:\script.ps1"). Si cela vous donne des erreurs, vous devez d'abord les corriger. Si vous envisagez d'exécuter la tâche en tant qu'utilisateur particulier, démarrez CMD en tant qu'utilisateur et exécutez la même ligne de commande pour vérifier si l'utilisateur dispose de toutes les autorisations requises pour tout ce que fait le script.

  • Vérifiez si votre tâche est réellement terminée ou si le processus est toujours en cours d'exécution (via Process Explorer, Get-Process, Gestionnaire des tâches, & hellip;).

  • Cochez la case Dernière exécution Résultat pour le code de sortie de la commande.

  • Activer l'historique de vos tâches planifiées (Action → Activer l'historique de toutes les tâches). Cela vous donnera au moins quelques informations sur ce que la tâche est en train de faire, si elle commence, et si/quelles erreurs se sont produites. Vous avez besoin de droits d'administration pour activer l'historique des tâches.

  • Vérifiez le journal des événements pour les erreurs/avertissements en corrélation avec l'exécution de la tâche.

  • Ajoutez des instructions de consignation au script que vous exécutez pour enregistrer les informations de progression. Personnellement, je préfère la journalisation au journal des événements, car cela évite les problèmes d'autorisations de système de fichiers.

    Write-EventLog -LogName Application -Source EventSystem -EventID 100 -EntryType Information -Message 'Your log message.' 
    

    Si vous avez des privilèges d'administrateur sur le système, vous pouvez enregistrer une source d'événement de votre propre et d'utiliser dans la déclaration de journal ci-dessus au lieu d'avoir abusé d'une source existante comme EventSystem:

    New-EventLog -Source MyEventSource -LogName Application 
    

Une aide supplémentaire dépendra fortement des résultats obtenus en suivant ces étapes ainsi que de votre code de script réel.

0

quelques observations importantes que j'avais rencontrés:

1) Au lieu de donner seulement powershell.exe, essayez de donner le chemin complet PS C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Powershell. exe

2) La permission est une autre préoccupation. L'utilisateur à travers lequel vous exécutez la tâche n'a peut-être pas l'autorisation d'exécuter cette tâche.

3) Exécution Policy-- Assurez-vous suspendez la politique d'exécution à l'aide by-pass -executionpolicy

4) Assurez-vous que vous exécutez la tâche avec plus hauts privilèges

5) Enfin, par l'analyse des journaux