Windows-Server-2008-R2

vbs 腳本的 Server 2008 R2 任務計劃程序權限

  • August 30, 2016

我有一個 vbs 腳本來使用 MySQLDump 命令備份 MySQL 數據庫文件。這是完美的工作,並為每天的備份創建一個新文件夾(例如 20130110)。

但是,該腳本還旨在通過刪除早於 x 天的文件夾來進行整理。

當我手動執行腳本時,它執行良好,但是當我在任務計劃程序中設置腳本並將其設置為“無論使用者是否登錄都執行”(使用管理員使用者帳戶)時,任務失敗。我認為問題在於權限,但由於文件夾是由任務創建的,因此它們應該能夠被任務刪除。

順便說一句,vbs 腳本使用 FileSystemObject DeleteFolder 命令執行刪除…

任何意見,將不勝感激!

編輯 問題出在 FileSystemObject DeleteFolder 命令上。我嘗試將文件夾設置為擁有所有人,完全權限,但仍然沒有樂趣……

答案如下:

設置動作時,而不是將“程序/腳本”設置為包含路徑(例如“C:\Scripts\Backup.vbs”),您需要將“程序/腳本”設置為“Backup.vbs”並且’Start in’ 為 “C:\Scripts"

該腳本現在有效!

感謝http://www.blogfodder.co.uk/2012/4/20/win-2008-task-scheduler-with-return-code-1-0x1的建議…

你的任務的命令行是什麼?任務產生的“上次執行結果”是什麼?“歷史記錄”選項卡中是否顯示任何錯誤或警告?您是否啟用了 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

引用自:https://serverfault.com/questions/470277