タスクスケジューラーが予約実行されない場合の対応

この記事について

タスクスケジューラーで日次ジョブを設定していましたが、ある時から実行されなくなりました。

 

今回は、解決に向けて色々試してみましたので、まとめます。

 

ちなみに実行していたジョブは、「バックアップ+シャットダウン」です。
※フリーソフトを使用

 

  • ログの確認方法
  • 確認しておくべき設定項目

 

① 履歴(ログ)を確認できるようにしておく

まずは、実行状況を確認できるようにしておきます。

 

初期設定では、タスクの履歴(ログ)が無効になっているので、有効に変更します。

 

① タスクスケジューラー画面右端の「すべてのタスク履歴を有効にする」をクリックします。

タスクスケジューラーのログ(履歴)を残す方法

 

② これで実行結果が表示されるようになります。

タスクスケジューラー 履歴(ログ)

 

② 手動で実行してみる

プログラムが正しく動いているかを「手動実行」で確認してみます。

 

① 該当ジョブを右クリックし「実行する」をクリックします。

タスクスケジューラー手動実行

 

もしこの時点で実行されない場合は、設定やプログラム自体の問題の可能性があります。

 

その場合は、下記の方法で「実行ファイル」や「スクリプト」が正しく設定されているかを確認しましょう。

① タスクを右クリック→「プロパティ」をクリックします。

タスクスケジューラープロパティ

 

②「操作」タブをクリックし、該当プログラムをクリックします。
「編集」ボタンをクリックします。

 タスクスケジューラーファイルの選択

 

③ 「プログラム/スクリプト」が正しく設定されていることを確認します。

タスクスケジューラー 実行ファイルの選択

 

③ スリープを解除

指定時刻になった時にスリープ状態になっていると、タスクが失敗することがあります。

 

そのため、スリープモードへの移行を解除しておきます。

 

① 「スタートメニュー」→「設定」をクリックします。

windows10設定

 

② 「システム」をクリックします。

設定→システム

 

③ 「電源とスリープ」→スリープをなしに変更します。

スリープを解除する

 

④ ユーザーがログオンしているかどうかにかかわらず実行する

Windowsにユーザーがログオンしている時だけ実行することもできます。

 

ここでは念のため、「ログインしていなくても実行するように」しておきます。

 

① タスクを右クリック→「プロパティ」をクリックします。

タスクスケジューラープロパティ

 

② 「ユーザーがログオンしているかどうかにかかわらず実行する」に変更します。
「OK」ボタンをクリックします。

ログオンしているかどうかにかかわらず実行する

 

⑤ 最上位の権限で実行する

プログラムのユーザー権限によって実行エラーが起きる場合があります。

 

そのため、どの権限でログインしていても、最上位の権限で実行されるようにしておきます

 

① タスクを右クリック→「プロパティ」をクリックします。

タスクスケジューラープロパティ

 

② 下記の「最上位の特権で実行する」にチェックを入れます。
「OK」ボタンをクリックします。

タスクスケジューラー最上位の特権で実行する

 

⑥ AC電源で使用している場合のみタスクを開始する

AC電源が接続されているかどうかによっても、実行の有無を選択できます。

 

そのため、「AC電源に接続されていても、いなくても」実行されるようにします。

 

① タスクを右クリック→「プロパティ」をクリックします。

タスクスケジューラープロパティ

 

② 「条件」タブをクリックします。
「コンピュータをAC電源で使用している場合のみタスクを開始する」のチェックを外しておきます。
「OK」ボタンをクリックします。

コンピュータをAC電源で使用している場合のみタスクを開始する

 

⑦ 起動要求が無視されました。インスタンスは既に実行中です。

私の場合は、上記の対応では復旧しませんでしたので、ログを確認しました。

 

すると「起動要求が無視されました。インスタンスは既に実行中です。」という文言が表記されています。

起動要求が無視されました。インスタンスは既に実行中です

 

この意味は、「前回のスケジュールがまだ実行中だから、今回のスケジュールでは実行しないよ」ということです。

 

もう少しログを確認すると、前日の同じタスクが「開始されたまま」になっています。

 

通常であれば、「タスクが完了しました」と表示されるはずですが、今回はされていません。

タスクが完了しました。タスクスケジューラー

 

バックアップは問題なく取れていたので、シャットダウンだけができていなかったようです。

 

とりあえずシャットダウンはいいとしても、バックアップされないのは困ります。

 

そこで、「前回ジョブが正常に終わらない場合でも、次回ジョブが実行される」ように設定をしておきます。

① タスクを右クリック→「プロパティ」をクリックします。

タスクスケジューラープロパティ

 

② 「設定」タブをクリック→一番下の「新しいインスタンスを開始しない」をクリックします。
「新しいインスタンスを並列で実行」に変更→「OK」ボタンをクリックします。

タスクスケジューラー新しいインスタンスを並列で実行

これにより、前回タスクが完了しなくても次回タスクが実行されるようになりました。

 

まとめ

私は以上の作業を行い、バックアップが取得できるようになりました。

ですが、なぜシャットダウンができないかは別途原因究明中です。

 

<今回のまとめ>

対応
履歴(ログ)を確認できるようにする
手動で実行してみる
・ログオンしているかどうかにかかわらず実行するに変更。
・最上位の権限で実行するに変更。
・AC電源で使用している場合のみタスクを開始するを解除。
起動要求が無視されました。インスタンスは既に実行中です。
→並列実行に変更する。