【问题标题】:How to close Outlook with VBScript when run from Task Scheduler从任务计划程序运行时如何使用 VBScript 关闭 Outlook
【发布时间】:2013-10-31 17:39:44
【问题描述】:

我已经在 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。

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

【问题讨论】:

  • 您设置了什么用户帐户来运行任务?

标签: vbscript outlook backup


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    相关资源
    最近更新 更多