タスクスケジューラが夜中に動かない原因はスリープ|設定で直るPCと直らないPCの見分け方

タスクスケジューラが夜中に動かない原因はスリープ|設定で直るPCと直らないPCの見分け方
当サイトはアフィリエイト広告を利用しています。

毎晩決まった時刻に動くよう登録したタスクが、朝見ると動いていない。
手で実行すれば動く。
この症状でまず疑うのは、その時刻にPCがスリープ(画面を消して眠る省電力の状態)に入っていて、処理を実行できないことです。

スリープ中のPCを時刻どおりに起こせるかどうかは、PCのスリープ方式で決まります。
ネットの解決記事の多くは従来方式(S3)のPCだけを前提に書かれているので、新方式(モダンスタンバイ)のPCでは手順どおりにやっても直りません。

この記事に出てくる用語
  • タスクスケジューラ … 決まった時刻に処理を自動で動かす、Windows標準の道具
  • スリープ解除タイマー … 「何時に起きる」という予約で、スリープ中のPCを起こす仕組み
  • モダンスタンバイ … 近年のノートPCに多い新方式。眠りながらネットにつながったままでいられる
  • コマンドプロンプト … 文字で命令を打ってWindowsを操作する画面。この記事では命令を1つ打つだけ
  • トリガー … タスクを動かすきっかけの指定。「毎日23時に」のような時刻指定

この記事が扱う症状かを先に確かめる

タスクスケジューラを開きます(検索ボックスに「タスクスケジューラ」と入力)。
左側の「タスク スケジューラ ライブラリ」をクリックし、一覧で自分のタスクの「前回の実行時刻」と「前回の実行結果」の列を見てください。

一覧の表示意味とやること
実行時刻は予定どおりだが、結果に (0x1) などのコードが出ている起動はしたが処理が失敗した。動かしたい処理の側を確認する
実行時刻が予定の時刻になっていない。その時刻、PCはスリープ中だったスリープが原因の可能性が高い。この記事を読み進める
実行時刻が更新されていないが、その時刻PCは起きていたスリープ以外の原因。トリガーと有効/無効を見直す

夜の間PCをシャットダウン(電源オフ)していると、予約では起こせません。
起こせるのはスリープか休止状態からだけです(Microsoftのpowercfgの資料に明記)。
夜間に自動実行するなら、PCはスリープにしておきます。

結論:起こせるかどうかはPCの方式で決まる

先に結論

  1. スリープ中のPCはタスクを実行できない。時刻どおり動かすには「時刻に合わせてPCを起こす」設定が要る
  2. 起こせるかどうかはスリープ方式で決まる。コマンド1つ(管理者権限不要)で確かめられる
  3. 従来方式(S3)なら設定2か所で直せる見込みが高い。モダンスタンバイは設定では直らないことがあり、その場合は「次に使い始めたとき動かす」か「夜間はスリープさせない」に切り替える

タスクスケジューラには「時刻に合わせてPCを起こす」機能があり、裏でスリープ解除タイマー(起きる時刻の予約)が使われます。

  • 従来方式(S3) … 深く眠り、予約の時刻に起きる。タイマーが効く前提の仕組み
  • モダンスタンバイ … タスクの予約で起きる保証が無く、「起きない」という報告が多い(詳細は後半の章)

自分のPCがどちらの方式かを3分で確かめる

方式を確かめる手順

  1. スタートボタン横の検索ボックスに「cmd」と入力し、「コマンド プロンプト」を開く(「管理者として実行」は不要)
  2. 黒い画面に次の1行を打ち込み、Enterキーを押す
powercfg /a
  1. 「スタンバイ (S0 低電力アイドル)」で始まる行が、「利用可能です」と「利用できません」のどちら側に表示されているかを見る

powercfg /a は現在の状態を表示するだけで、実行しても設定は何も変わりません。

  • 「利用できません」の側にある → 従来方式(S3)です。次の章へ
  • 「利用可能です」の側にある → モダンスタンバイです。「モダンスタンバイだった場合」の章へ(間の章は読み飛ばしてかまいません)

機種によっては行の後ろに「ネットワーク接続」などの言葉が付きますが、見るのはどちら側にあるかだけです。

「スタンバイ (S3)」と「S0 低電力アイドル」の両方が「利用できません」側なら、スリープ自体を使えない構成です(一部のデスクトップなど)。
原因はスリープではないので、タスクの登録内容など他を当たってください。

従来方式(S3)だった場合:設定2か所で直せる見込みが高い

タスク側で「起こしてくれ」と頼み、Windows側で「起こしてよい」と許可します。
片方だけでは起きません。

設定1:タスクに「スリープを解除する」を頼む

  1. タスクスケジューラの一覧で自分のタスクを右クリック →「プロパティ」
  2. 「条件」タブをクリック
  3. 「タスクを実行するためにスリープを解除する」にチェックを入れる
  4. 「OK」で閉じる(パスワードを求められたら、Windowsのサインインのパスワードを入れる)

⚠️ 同じ「条件」タブの「コンピューターをAC電源で使用している場合のみタスクを開始する」は既定でオンです。
オンのままバッテリー駆動で夜を越すと、スリープ解除まで成功しても実行が止まります。
夜間はPCを電源につないでおいてください。

設定2:Windows側で「起こしてよい」を許可する

  1. 検索ボックスに「電源プランの編集」と入力して開く(見つからなければ、WindowsキーとRを同時に押して powercfg.cpl と入力しEnter →「プラン設定の変更」)
  2. 「詳細な電源設定の変更」をクリック
  3. 一覧の「スリープ」をダブルクリックし、「スリープ解除タイマーの許可」を開く
  4. 値を「有効」にして「OK」

Windows 11では、選択肢は「無効」「有効」「重要なスリープ解除タイマーのみ」の3つが並びます。
Microsoftの電源設定の資料は、この3つ目を「内部のシステムタイマーによる解除だけを許可する」値だと定義しています。
自分で登録したタスクの予約が「重要」の扱いになるかどうかは、はっきりしていません。
この値のままでは起きられないことがあるので、「有効」に変えてください。

ノートPCでは、この画面が「バッテリ駆動」「電源に接続」の2欄に分かれています。
夜間はPCを電源につなぎ、少なくとも「電源に接続」側を「有効」にしてください。

「スリープ解除タイマーの許可」の項目自体が無い場合は、メーカーの初期設定や会社の管理で非表示にされています。
表示させるにはレジストリ(Windowsの心臓部の設定簿)の編集が要るため、この記事では扱いません。
自宅のPCならメーカーのサポート情報を機種名で調べ、会社のPCなら情報システム部門に相談してください。

動いたかをテストする(10分)

動作テストの手順

  1. タスクのプロパティ →「トリガー」タブ →「新規」で、今から5分後に1回だけ動くトリガーを仮に追加する(本番のトリガーは触らずに残す)
  2. ノートPCなら電源ケーブルをつなぐ
  3. スタートボタン → 電源 → スリープ
  4. 触らずに10分待つ(マウスに触れると起きてしまい、テストにならない)
  5. キーを押してPCを起こし、一覧の「前回の実行時刻」を見る

「前回の実行時刻」が手順1の時刻になっていれば成功です。
確認は起こした直後に行ってください。
10分ほど後に更新された場合は、取りこぼしを実行し直す設定(後述)が働いただけの可能性があります。

⚠️ 画面がついたかどうかで判断しないでください。
予約による解除は、画面がつかないまま裏で動くことがあります。
成否は「前回の実行時刻」で見ます。

テストが終わったら、仮のトリガーを削除します(トリガータブで選んで「削除」)。

それでも起きない場合、まれにBIOS/UEFI(Windowsより下の層の設定)でタイマー復帰が止められている機種があります。
「機種名+スリープ 復帰」でメーカーのサポート情報を調べてください。

起きたのに、処理が途中で止まるとき

予約で起きたPCは、人の操作がないと約2分で再びスリープに入ります(既定値)。
実行中の処理があっても、この再スリープは止まらなかったという報告が多くあります。

  • 処理が2分以内に終わる → そのままでよい
  • 処理が長い(大量のバックアップなど)→ 途中で眠って止まる可能性がある。後述のモダンスタンバイの章にある「その時間帯はスリープさせない」運用が確実

この時間を延ばす設定は画面に表示されておらず、レジストリの編集が要るため、この記事では扱いません。

モダンスタンバイだった場合:設定では直らないことがある

何が起きているのか

Microsoftの技術資料には、スタンバイ中も「OSが予定した時刻」にPCを起こすタイマーがある、と書かれています。
Windows Updateのような、Windows自身が予定した仕事がこれに当たります。
利用者がタスクスケジューラに登録したタスクを起こせるかどうかは、できるとも、できないとも書かれていません。

一方、利用者からの報告は「起きない」側に偏っています。
「『スリープを解除する』にチェックを入れても起きない」という質問はMicrosoftの公式Q&Aに繰り返し投稿されていますが、解決に至った公式の回答は見当たりません。

まず自分の機体で1回テストする

「起こせない」と明言されているわけではなく、挙動はメーカーごとの作り込みに依存します。
やり方は前の章の「動いたかをテストする(10分)」と同じです。
5分後の仮トリガーを足し、電源につないでスリープさせ、10分後に「前回の実行時刻」を見ます(画面がついたかでは判断しません)。

動いた場合も、1回の成功で夜間運用を決めないでください。
電源につないだまま数日運用し、毎朝「前回の実行時刻」が更新されているのを見届けてから任せるのが確実です。

なお「モダンスタンバイ機でも動いた」という書き込みには、スリープまでの時間を「なし」にして眠らせていなかった例が混じっています。

動かなかったときの現実解

テストで動かなければ、設定を探し回っても解決しない可能性が高いです。
判断基準は1つ。
その処理は夜中のその時刻に動く必要があるのか、朝までに終わっていればよいのか、です。

その1:朝までに終わっていればよい →「次に使い始めたとき動かす」

  1. タスクのプロパティ →「設定」タブ
  2. 「スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」にチェック
  3. 「OK」で閉じる

項目名は「すぐに」ですが、実際には既定で10分ほど待ってから始まります(Microsoftが仕様として明記)。
確認は、朝PCを使い始めて10分以上たってから「前回の実行時刻」を見てください。

⚠️ 「1回限り」のトリガーでは実行し直されません(これも仕様です)。
毎日・毎週のような繰り返しのトリガーで使ってください。

その2:夜中のその時刻に動くことが必要 → その時間帯はスリープさせない

  1. 設定(スタートボタン → 歯車)→「システム」→「電源とバッテリー」
  2. 「画面とスリープ」を開く
  3. 「電源接続時」のスリープを「なし」にする。画面のほうは短いままでよい(画面が消えても処理は続きます)
  4. ノートPCでふたを閉じたい場合は、コントロール パネル →「ハードウェアとサウンド」→「電源オプション」→「カバーを閉じたときの動作の選択」→ 電源接続時を「何もしない」にする

バッテリー側の設定を変えなければ、電源につないだ夜だけこの状態になります。

やらないほうがよいこと

検索すると、レジストリを書き換えてモダンスタンバイを無効化し、従来方式(S3)に戻す方法が見つかります。
この記事では勧めません。
Microsoftが案内している方法ではなく、近年の機種では従来方式の眠りをハードウェア自体が持っておらず、書き換えた結果スリープが壊れたという報告もあるためです。

会社のPCでは、ここまでの設定が管理で変更できないことがあります(画面が灰色で押せない、など)。
回避方法を探さず、情報システム部門に「夜間にこの処理を自動で動かしたい」と目的から相談してください。

この記事の確認範囲

この記事の画面と項目名は、Windows 11のものです。
Windows 10やエディションの違いで、名前や場所が変わることがあります。

  • モダンスタンバイのPCで、タスクの予約による解除が働くかどうかは分かっていません。機種ごとの作り込みで結果が変わります
  • ノートPCでは、電源の設定が「バッテリ駆動」「電源に接続」の2欄に分かれます。フタを閉じたときの動作やバッテリー駆動での解除は、機種によって変わることがあります
  • 予約で起きたPCが再びスリープに入るまでの時間は、機種や設定によって変わることがあります
  • 会社のPCでは、管理者の設定で電源設定の変更が制限されていることがあります

コメント

タイトルとURLをコピーしました