从 schtasks 获取退出代码

Obtaining exit code from schtasks

我正在尝试从 Powershell 脚本启动计划任务,如下所示:

schtasks /Run /TN "Test" > nul

我正在测试,所以我设置了任务来调用故意不存在的批处理文件。

发生这种情况后,我在下一行代码中看到错误级别为 0,尽管在任务计划程序的最后 运行 结果列中看到 0x1。

在控制台中,我看到

SUCCESS: Attempted to run the scheduled task "Test" 

在我看来,这似乎是在考虑启动成功,而不是等待捕获报告给任务计划程序的错误。 (0x1)

如何在 Powershell 中检测到此错误?

我似乎记得 schtasks.exe 只是指示任务调度程序去 运行 一个作业并且立即存在而无需等待。因此它总是 returning 0 除非找不到任务本身(退出代码:1)或发生灾难性事件(退出代码:不知道)。

如果要获取"Last Run Result"则需要查询任务,例如:

schtasks.exe /v /query /tn "A Real Task" /fo list

这将 return 任务详细信息,包括其 运行 状态,作为字段和值的列表,其中将包括 "Last Run Result"。

查看更多格式选项运行:

schtasks.exe /query /?

因此您可以通过执行以下操作来捕获有关任务的数据(在本例中为 CSV 格式):

$taskinfo = schtasks.exe /query /tn "A Real Task" /FO CSV /V

...然后以某种方式处理它。显然,您需要检查任务的 运行 状态以确保它在阅读 "Last Run Result".

之前已完成