Powershell script fonctionne en Powershell, mais échoue dans le Planificateur de Tâches
J'ai un script PowerShell qui envoie un e-mail via SMTP. Le script fonctionne très bien à l'intérieur de Powershell ISE, mais échoue dans le Planificateur de Tâches. Je suis sur Windows Server 2012. J'ai d'autres scripts Powershell que je tourne sur ce serveur en utilisant exactement la même configuration, mais ces scripts ne pas envoyer un e-mail. Le code de retour je vois dans le Planificateur de Tâches est (0xFFFD0000) et je ne trouve aucune information sur ce sujet. J'ai l'ensemble des tâches à exécuter avec des privilèges plus élevés et j'ai vérifié que le executionpolicy est RemoteSigned. Quelqu'un courir dans cette avant?
Voici la commande de la tâche:
powershell -f "c:\scripts\EmailTest.ps1"
Voici le script:
$EmailFrom = "[email protected]"
$EmailTo = "[email protected]"
$Subject = "Email Subject"
$Body = @"
Person,
Some message here
Thanks,
User
"@
$SMTPServer = "smtp.domain.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("[email protected]", "password");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
Mise à jour:
J'ai été en mesure de résoudre le problème. Apparemment, j'avais une ligne supplémentaire dans le script qui a été commentée. Je ne suis pas sûr de savoir pourquoi cela provoquerait une erreur mais une fois que j'ai supprimé cette commentée ligne il fonctionnait bien dans le Planificateur de Tâches. le commentaire était comme ça et c'était juste en dessous de l'autre $Mail à déclaration dans le script ci-dessus:
#$EmailTo = "[email protected]"
OriginalL'auteur shark92651 | 2012-12-11
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé un autre problème possible tout en regardant un problème similaire. J'ai été dans l'incapacité d'exécuter un script PowerShell en tant que Planificateur de Tâches de l'action, même si le script s'est exécuté correctement lorsque vous êtes connecté à Windows en tant qu'utilisateur cible et en cours d'exécution dans PowerShell.
Planificateur de tâches serait constamment afficher le 0xFFFD0000 erreur quand j'ai proposé le script dans la tâche arguments de l'action à l'aide de ce que je croyais être normal PowerShell citer des règles:
PowerShell acquiescé et le Planificateur de Tâches tiré la tâche immédiatement et sans problème quand j'ai changé les guillemets, j'ai utilisé du simple au double:
Pour tomber à une invite de commande et l'exécution de l'intégralité de la commande immédiatement révélé le problème:
Avis de l'étrange, de l'utilisation de deux apostrophes avant le chemin d'accès et une apostrophe après.
La morale de l'histoire: Lors de l'alimentation le chemin d'accès complet d'un script PowerShell en tant que paramètre de ligne de commande, d'utiliser des guillemets!
OriginalL'auteur SJSpain
J'ai reçu le même message d'erreur et en fin de compte, j'avais une autre question - l'option de démarrage dans le répertoire de configuration n'a pas été appliqué.
Essentiellement, j'ai été l'exécution d'un .fichier bat - c:\tasks\process.bat
Cette .fichier bat référencé plusieurs ps1 scripts qui ont été dans les tâches de répertoire et les références ont été tout simplement par nom de fichier (pas le répertoire complet). Sur l'onglet action dans le planificateur de tâches, il y a un Début à (facultatif) que je n'avais pas renseigné. Le paramètre c:\tasks permis les références pour fonctionner correctement.
OriginalL'auteur mcook
Tout d'abord, vous devez cocher "ExecutionPolicy" est configuré sur votre machine. pour ce faire, vérifiez les valeurs par défaut en suivant ce lien https://technet.microsoft.com/en-us/library/hh847748.aspx
J'ai résolu mon problème en utilisant cette commande:
Sur "Ajouter des arguments" option j'ai mis:
"-Executionpolicy de Dérivation commande "& "T:\deleteOldMessages.ps1' "
et
OriginalL'auteur Sam Doxy