(新)タイトルいつ決めるのさ

何かの参考にして頂ければ幸いです。


▼ 当ブログはアフィリエイトサービスを利用しており、リンクにはプロモーションが含まれます ▼
当ブログではアフィリエイト広告により得た収益をブログの運営・維持に充てさせて頂いております。提携しております ASP につきましては「プライバシーポリシー」よりご確認下さい。
尚、企業様より商品またはサービスの提供を受けて掲載した記事につきましては、別途「PR・プロモーション」カテゴリに分類し、記事冒頭にその旨を分かりやすく記載するよう心掛けております。
当ブログ記事の記載内容や広告の掲載方法に関するご指摘がございましたら「こちらのフォーム」よりお問い合わせ下さい。

タスクスケジューラを使って設定した時間になると強制的に PC を休止状態に移行させる方法(Windows11)

以前にも書いていた記事なのですが、Windows 11 になってタスクスケジューラーの場所など変更になっている箇所があるので、書き直したものをメモとして残しておくことにします。


メインPC にピクセラ社の PIX-DT260 という TVチューナーカードを取り付けているのですが、どうもこのカードのせいで番組の録画が終わっても PC が休止状態に移行せず、一晩中 PC が点きっぱなしという事が起きるようです(うちの環境だけなのかも知れませんが)。

そこで、Windows 11 に標準装備されている「タスクスケジューラ」を使って、指定した時間になったら強制的に PC を休止状態に移行させるように設定しておくことにしました。ただし、この方法を使うと、例えば放映時間がずれ込んで録画途中だったとしてもブッツリいってしまう可能性もあるのでその点にだけは注意と覚悟(?)が必要です。

方法は以下の通り。

  1. Windows 11 のスタートボタンを右クリックして「コンピューターの管理」を立ち上げます。Windows 11 では「タスクスケジューラ」はこの「コンピューターの管理」というアプリの中に組み込まれたようです(スタートメニューから探す場合は「Windows ツール」の中にあります)。「タスクスケジューラー」を選択し、右側にある「基本タスクの作成」をクリックします。

    Windows 11 タスクスケジューラー

    基本タスク作成
  2. 「基本タスクの作成ウィザード」が開くので、適当なタスクの名前を設定して「次へ」をクリック。

    分かりやすいように動作の内容の簡単な説明を書いておいても良いでしょう。
  3. タスクの「トリガー」の設定を行います。タスクを実行するタイミングや頻度と開始時刻を設定して下さい。「間隔」を ” 1日 ” に設定しておけば毎日同じ時間にタスクが実行されるようになります。

    トリガー設定

  4. 「操作」の設定ではタスクが起動した際にどのような動作を行うのかを指定します。

    ここでは「プログラムの開始」を選択し、

    「プログラム/スクリプト」に、

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    「引数の追加」に、

    Add-Type -Assembly System.Windows.Forms;[System.Windows.Forms.Application]::SetSuspendState('Suspend', $false, $false);

    と記述します。

    操作設定

    この「引数」ですが、最期の 3つのパラメーターの意味は以下の様になっています。必要に応じて変更して使って下さい。

     ・ PowerState ー 移行後の電源の動作モードを示す
        Suspend :サスペンド状態に移行。スタンバイ中の停電には注意
        Hibernate :休止状態に移行。サスペンドよりは復帰までの時間が掛かる
     ・ force ー 強制的に中断モードにするかどうかの設定
        true    :強制的に中断モードに移行
        false   :Windows からアプリケーションに中断要求が送られる
     ・ disableWakeEvent ー wakeイベントによる電源ステータス復帰の許可/不許可
        true    :wakeイベントによる電源ステータス復元を認めない
        false   :wakeイベントによって電源ステータスがアクティブになる

    (参考:Application.SetSuspendState(PowerState, Boolean, Boolean) メソッド)
    ということで、私の場合は最終的に次のように変更しました。

    Add-Type -Assembly System.Windows.Forms;[System.Windows.Forms.Application]::SetSuspendState('Hibernate', $false, $true);

    スタンバイ時にハイバネート(メモリの内容をディスクに保存してスタンバイ)し、wakeイベントからの復帰を阻止しています。これだとシステムスタンバイ状態からのタイマー録画などは行えませんが、番組表を取得しようとして復帰したりもしてしまうようなのでここは妥協しました。そうした場合は nasne に働いてもらうことにします。

    確認画面
  5. 「要約」として設定したタスクの確認画面が表示されるので、内容に問題が無ければ「完了」をクリックします。「タスクスケジューラ」の画面に戻って「タスクスケジュールライブラリ」を確認し、先ほど設定したタスクが登録されていればOKです。時間などを変更したい場合は、タスクを選択した状態で右側の「プロパティ」をクリックすれば編集画面が開きます。
    尚、登録したタスクを右クリックして「実行」を押すと、選択されているタスクがスケジュール設定に関係無くすぐにその場で実行されます。きちんと動作するか確認しておくのも良いでしょう。

今のところ想定通りの動作を行ってくれているようです。もしタスクが作動してすぐにまた Windows が起きてしまうようでしたら、マウスなどのデバイスの電源管理が悪さをしている可能性があります。

特に最近のマウスは多機能になっているので、デバイスマネージャーの「マウス」の項目で「このデバイスで、コンピューターのスタンバイ状態を解除できるようにする」のチェックを外しただけでは駄目で、「キーボード」項目の「HIDキーボードデバイス」、「ヒューマンインターフェイスデバイス」項目の「HID準拠コンシューマー制御デバイス」の方でもチェックを外しておかないとならないケースがあるようです。もし嵌まっている方が居られましたら試してみて下さい。どれがマウスのものか分からない場合は、マウス以外の USB機器を全て一旦取り外してみればわかります。