LAN上の2つの専用サーバー間でファイル同期をスケジュールしようとしています。リモートマシンはWindows Server 2003を実行しており、ローカルマシンはWindows Server 2008を実行しています。
リモートフォルダーをJ:ネットワークドライブとしてマウントして、権限の問題を克服しました。コマンドを手動で実行すると、すべてが期待どおりに機能し、フォルダーの内容がミラーリングされます。
robocopy J:\\ C:\\Files /MIR > c:\\robocopy.log
しかし、それをスケジュールされたタスクに入れるとすぐに、戻りコード0x10(16)で失敗します。これは 重大なエラー です。そのため、ネットワークアクセス許可エラーを想定し、2つのローカルフォルダー間のアクションをスケジュールしました。同じエラーが発生し、robocopy.log
出力ファイルは作成されません。管理者としてアクションを実行しています。
スケジュールされたタスクが失敗するのはなぜですか?
schtasks /query /v /fo LIST /s localhost
からの出力:HostName: localhost
TaskName: \Sync Task
Next Run Time: 11/7/2010 3:00:00 AM
Status: Ready
Logon Mode: Interactive/Background
Last Run Time: 11/6/2010 2:49:21 PM
Last Result: 16
Author: Host\Administrator
Task To Run: robocopy.exe "C:\\LocalFolder" "C:\\Destination" /MIR /LOG > c:\\robocopy.log
Start In: N/A
Comment: N/A
Scheduled Task State: Enabled
Idle Time: Disabled
Power Management: Stop On Battery Mode
Run As User: Host\Administrator
Delete Task If Not Rescheduled: Enabled
Stop Task If Runs X Hours and X Mins: Disabled
Schedule: Scheduling data is not available in this format.
Schedule Type: Daily
Start Time: 3:00:00 AM
Start Date: 8/6/2010
End Date: N/A
Days: Every 1 day(s)
Months: N/A
Repeat: Every: Disabled
Repeat: Until: Time: Disabled
Repeat: Until: Duration: Disabled
Repeat: Stop If Still Running: Disabled
Robocopyコマンドを呼び出す前に次のアクションを追加することで解決しました。
Net Use j: \\RemoteHost\Files RemotePassword /user:RemoteUser
マップされたドライブ文字を使用する代わりに、共有のUNCパス(\\ servername\sharename\folder)を使用します。マップされたドライブは必ずしもスケジュールされたタスクが実行されるセッションではなく、セッションに関連付けられているので、これは物事を簡素化します。
次に、スケジュールされたタスクに関連付けられているユーザーがその共有にアクセスできることを確認します。
これで問題が解決するはずです。
私は最近この問題に遭遇し、「最高の特権で実行」というラベルの付いたスケジュールされたタスクにチェックを入れることで解決しました。