Server 2008 R2 任务计划程序对 vbs 脚本的权限

Server 2008 R2 任务计划程序对 vbs 脚本的权限

我有一个 vbs 脚本,可以使用 MySQLDump 命令备份 MySQL 数据库文件。这个脚本运行正常,并且会为每天的备份(例如 20130110)创建一个新文件夹。

但是,该脚本还可以通过删除超过 x 天的文件夹来进行整理。

当我手动运行脚本时,它运行良好,但是当我在任务计划程序中设置脚本并将其设置为“无论用户是否登录都运行”(使用管理员用户帐户)时,任务失败。我认为问题出在权限上,但由于文件夹是由任务创建的,因此它们应该能够被任务删除。

顺便说一句,vbs 脚本使用 FileSystemObject DeleteFolder 命令执行删除...

任何意见,将不胜感激!

编辑 问题肯定出在 FileSystemObject DeleteFolder 命令上。我尝试将文件夹设置为让所有人拥有完全权限,但仍然没有效果...

答案1

答案如下:

设置操作时,不要将“程序/脚本”设置为包含路径(例如“C:\Scripts\Backup.vbs”),而需要将“程序/脚本”设置为“Backup.vbs”,并将“启动于”设置为“C:\Scripts\”

脚本现在可以正常工作了!

谢谢http://www.blogfodder.co.uk/2012/4/20/win-2008-task-scheduler-with-return-code-1-0x1对于建议...

答案2

您的任务的命令行是什么?任务产生的“上次运行结果”是什么?“历史记录”选项卡中是否显示任何错误或警告?您是否启用了 UAC,但忽略了检查“以最高权限运行”选项?

尝试在脚本中添加一些调试代码来隔离错误。我个人更喜欢记录到事件日志以避免文件系统权限问题。

Set sh = CreateObject("WScript.Shell")
sh.LogEvent 4, "marker 1"

' your code here

sh.LogEvent 4, "marker 2"

' more of your code here

sh.LogEvent 4, "marker 3"

' ...

这应该能让你大致了解代码中哪部分有问题。找到问题后,你可以添加更具体的调试代码,例如:

' some code

On Error Resume Next
' first instruction here
If Err Then ReportError "Error in 1st instruction"
' second instruction here
If Err Then Report Error "Error in 2nd instruction"
' ...
On Error Goto 0

' more code

Sub ReportError(txt)
  CreateObject("WScript.Shell").LogEvent 1, txt & ": " & Err.Description _
    & " (0x" & Hex(Err.Number) & ")"
  WScript.Quit 1
End Sub

相关内容