我正在尝试从Powershell脚本启动计划任务,如下所示:
schtasks /Run /TN "Test" > nul
我正在测试,所以我已经设置了调用故意不存在的批处理文件的任务。
一旦发生这种情况,我会在下一行代码中看到错误级别为0,尽管在任务计划程序的上次运行结果列中看到了0x1。
在控制台中,我看到了
SUCCESS: Attempted to run the scheduled task "Test"
这看起来好像它正在考虑发布成功,而不是等待捕获报告给任务计划程序的错误。 (为0x1)
如何在Powershell中检测到此错误?
答案 0 :(得分:3)
我似乎记得schtasks.exe
只是指示任务调度程序运行一个作业并立即存在而无需等待。因此它总是返回0
,除非无法找到任务本身(退出代码:1
)或发生灾难性事件(退出代码:不知道)。
如果您想获得“上次运行结果”,您需要查询任务,例如:
schtasks.exe /v /query /tn "A Real Task" /fo list
这将返回任务详细信息,包括其运行状态,作为包含“上次运行结果”的字段和值列表。
要查看更多格式选项:
schtasks.exe /query /?
因此,您可以通过执行以下操作捕获有关任务的数据(在本例中为CSV格式):
$taskinfo = schtasks.exe /query /tn "A Real Task" /FO CSV /V
...然后以某种方式处理它。显然,在阅读“上次运行结果”之前,您需要检查任务的运行状态以确保它已完成。