即使powershell脚本失败,任务调度程序状态成功的原因也是如此

时间:2015-10-19 05:40:37

标签: powershell scheduled-tasks powershell-v3.0 schtasks.exe

基本上我已在Windows任务计划程序中安排了一项任务。

在我安排了PowerShell脚本的任务中

在程序/脚本路径中,我们给出了powershell路径,并在我们给出的参数路径中

-command "& C:\Users\xxxx\Desktop\1.PS1"

我正在检查任务是否在powershell脚本失败时失败。

所以powershell脚本失败但最后一次运行状态显示

"The operation completed successfully"

如果配置我的任务,如果powershell脚本无法成功运行,它将返回失败?

修改

我有3个任务(所有3个是包含参数的PowerShell脚本) 基本上我已经为任务2和任务3创建了自定义触发器

即如果task1成功,那么任务2将被触发,如果任务2成功,则将触发task3。

在测试上述场景时,即使任务2中使用的powershell脚本返回错误(在代码中故意完成错误以检查场景),上次运行状态表示操作已成功完成且任务3任务被触发

2 个答案:

答案 0 :(得分:0)

为什么没有3个计划任务,而不是当前的情况。 第一个脚本运行第一个脚本,如果脚本本身认为自己成功,则运行第二个计划任务本身? 例如,使用Start-ScheduledTask(https://technet.microsoft.com/en-us/library/jj649818(v=wps.630).aspx)。

这样,您的每个脚本都可以检查自己是否有问题,如果没有找到,可以调用下一个任务。这还有额外的好处,让您可以完全控制运行哪个计划任务,以及何时运行。

答案 1 :(得分:0)

基于评论in this thread和我自己的测试,听起来似乎不可能让计划任务记录为脚本失败而失败,因为任务的目的是它开始成功的程序。

但是,可以将退出代码返回到计划任务。退出代码将记录在事件历史记录中(信息级别)。如上所述in this thread,必须在计划任务调用脚本的参数中引用返回码:

-ExecutionPolicy Bypass –NoProfile –Command "& {C:\ProgramData\ORGNAME\scripts\SetDNS.ps1; exit $LastExitCode}"