从 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".
之前已完成
我正在尝试从 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".
之前已完成