我可以使用VBScript来返回Windows预定作业的最后结果吗?

我有一个在XP机器上运行的计划作业。 此作业会不时以“0”以外的退出码失败。 我想写一个可以运行在工作背后的VBScript,并得到“最后的结果”。 如果这个结果不正确,那么我希望它启动一个电子邮件通知我,工作失败。

这可能吗?

试试这个:而不是你的计划工作,安排一个类似于以下脚本:

VB Script Document option explicit 'On Error Resume Next On Error GoTo 0 Dim strResult: strResult = Wscript.ScriptName & vbNewLine Dim WshShell, oExec, appExitCode, appExitString Set WshShell = CreateObject("WScript.Shell") ShowResult( "%comspec% /C dir *.*") ShowResult( "%comspec% /C dir*.*") ShowResult( "YourSchedApp") Wscript.Echo strResult Wscript.Quit Private Sub ShowResult( ByVal AppToRun) strResult = strResult & vbNewLine & AppToRun & vbNewLine On Error Resume Next Set oExec = WshShell.Exec( AppToRun) appExitCode = Err.Number If appExitCode = 0 Then Do While oExec.Status = 0 WScript.Sleep 100 Loop appExitCode = oExec.ExitCode appExitString = "" Else appExitString = "Error 0x" & Hex( appExitCode) & vbTab & Err.Description Err.Clear End If On Error GoTo 0 strResult = strResult & "Exit code " & CStr( appExitCode) & vbNewLine & appExitString Set oExec = Nothing End Sub 

在strResult变量,你可以收集所有的信息,以电子邮件…

 for /f "tokens=3 delims=: " %A in ('schtasks /query /tn alarm2 /v /fo list^|findstr /c:"Last Result"') do echo %A 

给你最后的结果

这是如何通过COM访问TS的

 Set service = CreateObject("Schedule.Service") call service.Connect("Serenity") ' Get the task folder that contains the tasks. Dim rootFolder Set rootFolder = service.GetFolder("\") Dim taskCollection Set taskCollection = rootFolder.GetTasks(0)