如何从任务计划程序运行时使用VBScript关闭Outlook

时间:2013-10-22 17:48:17

标签: vbscript outlook backup

我在Stack Overflow网站上搜索了与关闭相关的问题 外表。有很多热门歌曲,但似乎都没有描述我的意思 试图做。

我正在尝试解决的问题是如何备份Outlook数据库 自动无人看管。 Outlook需要关闭(如果是的话) 在复制.pst文件之前运行)。

我在(www.howto-outlook.com/howto/closeoutlookscript.htm)找到了一个VBScript 这似乎是我需要的。但是从发起时我无法让它运行 Windows任务计划程序。

我在Windows 8 Sony笔记本电脑上运行。

我的VBScript应该在备份.pst文件之前关闭Outlook。 代码存储在CloseOutlookVerify.vbs。

以下是来自CloseOutlookVerify.vbs的违规代码:

Set colProcessList = objWMIService.ExecQuery _
   ("Select * from Win32_Process Where Name = 'Outlook.exe'")
For Each objProcess in colProcessList
   Set objOutlook = CreateObject("Outlook.Application")

' The above line fails with ERR = 70 - Permission denied

   objOutlook.Quit
   Closed = 1
Next
  • 如果我双击.vbs文件,此脚本可以正常工作 来自Windows资源管理器。
  • 如果我从DOS命令提示符窗口运行它,它可以正常工作。
  • 通过Windows任务计划程序运行时,它以err = 70失败。

因此,从命令提示符运行此脚本有何不同 与任务调度程序相比?如何在运行时使其正常工作 由任务调度程序?

仅供参考 - 我用C和Unix shell语言编写了我的生活编程,但是这个 是我在Windows环境中第一次接触VBS。

非常感谢您提供的任何专业知识。

1 个答案:

答案 0 :(得分:1)

我认为这是因为没有设置impersonationLevel。试试这个:

      Set objWMIService = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" & strSysName & "\root\cimv2")
      Set colProcessList = objWMIService.ExecQuery _
      ("Select * from Win32_Process Where Name = 'Outlook.exe'")
      For Each objProcess in colProcessList
        objProcess.Terminate()
      Next