
Windows Server 2008 R2 (完全パッチ適用済み)
特定の種類のファイルを C:\Windows\Temp から E:\Foo_blah_blah_blah_blah\Foo2 に移動するスケジュールされたタスクを実行しようとしていますが、何らかの理由で次のエラーが発生します。
タスク スケジューラは、ユーザー "FOOBOX\Administrator" の "\Move Temp Files" タスクのインスタンス "{fe0f148a-cece-44a0-a4d1-914aaf21daa8}" を開始できませんでした。追加データ: エラー値: 2147942402
なぜこのようなことが起こるのか、何か考えはありますか?
さらなる詳細:
- タスクは、ファイルを移動する権限を持つアカウントとして実行されるように構成されています。
- タスクは、ユーザーがログオンしているかどうかに関係なく実行されるように構成されています。どちらのシナリオでも失敗し、同じエラーが発生します。
- タスクはローカル OS (Windows Server 2008) で実行されるように構成されています。
- コマンドは2つの部分に分かれています。プログラム/スクリプト:
move
引数を追加:C:\Windows\Temp\*.foo E:\Foo_blah_blah_blah_blah\Foo2\
同じコマンドをmove C:\Windows\Temp\*.foo E:\Foo_blah_blah_blah_blah\Foo2\
Windows コマンド プロンプトから実行すると、正常に動作します。
何が足りないのでしょうか?
答え1
Ryan Ries が指摘したように、2147942402 は「ファイルが見つかりません」という意味になります。これは非常に適切な応答です。Win+R を押して、「move」と入力し、Enter キーを押します。これは、タスクが実行できなかった操作と同等のインタラクティブな操作です。
その理由は、 はMOVE
プログラムではなく、 のネイティブ コマンドだからですcmd
。
そのはず:
プログラム:"cmd.exe"
引数:"/c move C:\Windows\Temp\*.foo E:\Foo_blah_blah_blah_blah\Foo2\"
答え2
理由は、タスクが再度実行される予定がない場合に削除されるように設定されているためです。これは、[設定] タブで設定します。タスクの削除は、タスクを起動するトリガーの有効期限が切れたときに行われます。トリガーの有効期限がトリガーの開始時間とまったく同じである場合、トリガーが起動する数秒前にタスクが削除されるという偶然の事態が発生する可能性があります。これにより、理由コード 2147942402 のイベント 101 が発生します。解決策は、トリガーの有効期限をトリガーの開始時間より 1 分遅く設定することです。
答え3
Powershell では、コマンドにフルパスを指定します。つまり、C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe です。
答え4
Matthias が投稿した回答のおかげで、問題を解決することができました。
私はコマンド ライン全体を「プログラム」フィールドに入力し、パスと引数をすべて一緒に入力していました。別の「引数」入力フィールドがあることに気付いていませんでした。引数を分割して個別に入力すると、スケジュールされたタスクは問題なく実行されました。
診断: OS は、引数を指定して"C:\bin\someprog.BAT connect keep"
を探して呼び出すのではなく、 と呼ばれるプログラムを探していました。"C:\bin\someprog.BAT"
connect keep
私の間違いは修正されました。