如何在任务完成时更新运行结果?

Posted

技术标签:

【中文标题】如何在任务完成时更新运行结果?【英文标题】:How do I Update Run Result on Task Completion? 【发布时间】:2015-07-31 14:05:12 【问题描述】:

我正在尝试使用任务计划程序每分钟运行一次 PowerShell 脚本。该脚本基本上会触发 HTTP GET 请求,如果请求不成功,我希望任务将“运行结果”显示为错误。

现在,无论我的脚本中发生什么,任务计划程序都将最后一个“运行结果”显示为“成功”,我不确定应该怎么做才能使其正常工作。在我的脚本中,如果请求没有返回 200/OK,我使用Exit 1,否则使用Exit 0

我的任务操作设置如下:

操作:启动程序 程序/脚本:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 添加参数:-NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "C:\MyScript.ps1; Exit $LASTEXITCODE" 开始于:C:\

【问题讨论】:

该任务应该按您的预期工作(尽管我会使用-File "C:\MyScript.ps1" 而不是-Command)。你刷新视图了吗?任务计划程序 UI 有时可能会有点反应迟钝。 @AnsgarWiechers 我注意到在“任务计划程序(本地)”视图的“任务状态”部分中,当我展开我的工作以查看过去的执行时,“运行结果”是每次都“成功”。但是,如果我转到“任务计划程序库”视图,我会看到“上次运行结果”是 (0x1),这似乎是正确的错误代码。我不确定这两种观点有什么区别,但我的问题是针对我描述的第一个观点。 【参考方案1】:

您正在正确运行所有内容,并且已正确设置所有内容。

为了回答你的问题,“任务计划程序库”视图,“上次运行结果”是正确的结果,正确的视图是看事情是否运行成功。

“任务计划程序(本地)”视图的“任务状态”部分只是告诉您任务是否运行。它不返回任务操作的结果。因此,它只会在某些原因导致它错过计划运行(例如继续使用电池电源)时显示错误,而不是在 Task Action 失败时显示。

我个人总是使用“任务计划程序库”视图,“上次运行结果”作为查看事情是否失败的唯一方法。

【讨论】:

对不起,@AnsgarWiechers,你是对的。我当时正在考虑这个问题:(***.com/questions/18410956/…)其中-Command 不会返回正确的退出代码(因此是丑陋的解决方法)并且错误地将其归因于-File 的问题。我已经删除了关于它的 cmets。【参考方案2】:

您可以在 cmd 文件中使用 EXIT %ERRORLEVEL% 将 PowerShell 中的任何非零返回代码“冒泡”到任务计划程序中的上次运行结果列

如中所述 http://www.technologytoolbox.com/blog/jjameson/archive/2011/11/19/tips-tricks-for-running-powershell-scripts-as-scheduled-tasks.aspx

【讨论】:

以上是关于如何在任务完成时更新运行结果?的主要内容,如果未能解决你的问题,请参考以下文章

在任务仍在运行时返回结果

如何在运行任务后或在任务运行期间更新 Asp .Net 中的 UI?

如何在 c# 中运行多个任务并在完成这些任务时获取事件?

如何在任务中获取芹菜结果模型(使用 django-celery-results)

使用 asyncio 时,如何让所有正在运行的任务在关闭事件循环之前完成

完成处理程序在运行另一个任务之前完成任务