web-dev-qa-db-ja.com

vbsスクリプトに対するServer2008R2タスクスケジューラのpermissionf

MySQLDumpコマンドを使用してMySQLデータベースファイルのバックアップを作成するvbsスクリプトがあります。これは完全に機能しており、毎日のバックアップ用に新しいフォルダーを作成します(例:20130110)。

ただし、スクリプトは、x日より古いフォルダーを削除することによって整理することも目的としています。

スクリプトを手動で実行すると完全に機能しますが、タスクスケジューラでスクリプトを設定し、(ユーザーがログオンしているかどうかに関係なく実行する)に設定すると(管理者ユーザーアカウントを使用)、タスクが失敗します。問題は権限にあると思いますが、フォルダはタスクによって作成されるため、タスクによって削除できるはずです。

ところで、vbsスクリプトはFileSystemObjectDeleteFolderコマンドを使用して削除を行います...

アドバイスをいただければ幸いです。

編集問題となっているのは間違いなくFileSystemObjectDeleteFolderコマンドです。フォルダーをEveryone、完全なアクセス許可を持つように設定しようとしましたが、それでも喜びはありません...

1
JezB

答えは次のとおりです。

アクションを設定するときは、パスを含めるように「プログラム/スクリプト」を設定するのではなく(「C:\ Scripts\Backup.vbs」など)、「プログラム/スクリプト」を「Backup.vbs」として設定する必要があります。 'Start in' as "C:\ Scripts \"

スクリプトが機能するようになりました。

http://www.blogfodder.co.uk/2012/4/20/win-2008-task-scheduler-with-return-code-1-0x1 の提案に感謝します...

1
JezB

あなたのタスクのコマンドラインは何ですか?タスクによって生成される「最終実行結果」とは何ですか? [履歴]タブにエラーや警告が表示されますか? 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
0
Ansgar Wiechers