【问题标题】:Can I use vbscript to return the last result of a windows scheduled job?我可以使用 vbscript 返回 Windows 计划作业的最后结果吗?
【发布时间】:2014-04-30 16:56:09
【问题描述】:

我有一个在 XP 机器上运行的计划作业。该作业有时会失败,退出代码不是“0”。我想编写一个可以在作业后面运行并获得“最后结果”的 vbscript。如果该结果不正确,那么我希望它向我发送一封电子邮件,通知我工作失败。

这可能吗?

【问题讨论】:

    标签: windows batch-file vbscript scheduled-tasks


    【解决方案1】:

    试试这个:代替您计划的作业,安排一个类似于以下的脚本:

     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 变量中,您可以将所有信息收集到电子邮件...

    【讨论】:

      【解决方案2】:
      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)
      

      【讨论】:

      • 我真正在寻找的是一种从特定任务中拉回最后结果的方法。我尝试了上面的行以获得结果,但它在字符 5 处出现“预期标识符”错误。
      • 它在这里工作。您还可以将任务附加到任务调度程序事件。右键单击事件查看器中的事件并创建一个发送电子邮件的任务。
      • 看起来 /tn 开关在 xp 机器上不受支持。有没有办法从联网的机器上运行这个命令?
      • 我认为 XP 使用不同的 TS,称为 ver 1。如果您查看 TS 应用程序或 schtasks,您可以创建要运行的 ver 1 任务。您可以使用这两个任务计划程序指定计算机名、用户名和密码。这是第 1 版文档 - msdn.microsoft.com/en-us/library/windows/desktop/…
      猜你喜欢
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      • 2013-08-24
      • 2022-11-01
      • 1970-01-01
      • 2011-06-06
      相关资源
      最近更新 更多