J'ai quelques scripts Exchange 2010 PowerShell que j'aimerais exécuter en tant que tâches planifiées.
Si je lance PowerShell en utilisant "Exécuter en tant qu'utilisateur différent", je peux exécuter les scripts et ils s'exécutent correctement.
Si je planifie une tâche en utilisant ce même utilisateur, la tâche reste à l'état En cours pour toujours.
Comment savoir où la tâche se bloque?
Pour référence, voici comment j'active le truc Exchange:
. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
Et voici les façons dont j'ai essayé d'exécuter le script à partir du Planificateur de tâches:
- powershell -command "& {. 'c: \ windows \ script.ps1'}"
- powershell -fichier 'c: \ windows \ script.ps1'
- powershell -file "c: \ windows \ script.ps1"
Tous avec le même résultat. Grr ...
Register-ScheduledJob
n'a jamais «pris fin», elle s'est terminée une fois que j'ai fermé ma console PowerShell et ISE.Réponses:
Vous devez soit modifier votre stratégie d'exécution, soit spécifier le
-ExecutionPolicy Bypass
comme paramètre de ligne de commande.la source
Je ne sais pas si c'est ainsi que vous le faites, mais lorsque j'exécute des scripts PowerShell via le planificateur de tâches, j'utilise l'action "Démarrer un programme" et sélectionne PowerShell, puis j'ajoute les arguments à partir de là. C'est peut-être ce que vous faites ici, mais ce n'est pas clair. Voici une capture d'écran:
Selon la politique d'exécution de TheCompWiz, il peut également y avoir un problème.
la source
-command
J'ai eu le même problème. Dans mon cas, la solution était de spécifier le répertoire "start in" (mon script lirait le contenu d'un fichier qu'il ne trouverait pas car je n'ai pas spécifié le chemin complet du fichier).
la source
J'ai eu le même problème et le commentaire de "user279399" pour utiliser la commande taskkill était super utile, il fallait juste une modification. Voici ma solution à la fin de la syntaxe des arguments
Cette commande ne tue que la session Powershell qui s'exécute sous ce compte d'utilisateur. Il est recommandé d'avoir un compte administrateur Exchange distinct pour exécuter les tâches planifiées.
la source
Essayez d'ajouter à la fin de votre script [taskkill / f / im "powershell.exe"] cela tuera tous les processus "powershell.exe". Je ne sais pas comment tuer le processus Power-Shell actuel (équivalent à [cmd.exe / c]). Mais ça fera l'affaire.
la source