Windowsのタスクスケジューラーをもっと使いこなす
ASCII.jp / 2023年1月22日 10時0分
プログラムを定期的に実行する、あるいは起動時やログオン時に実行したいとき、タスクスケジューラが利用できる。
しかし、Windowsのタスクスケジューラは、Windowsの標準機能の中でも複雑なものの1つだろう。タスクスケジューラのAPIを解説したドキュメントはあるのだが、GUIアプリケーションの「タスクスケジューラ」(以下タスクスケジューラ・アプリ)については古いものしかない。
●Task Scheduler Overview(英語) https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/cc721871(v=ws.11)
タスクスケジュール機能は、アプリだけでなく、schtasks.exeコマンドからも操作できる。Windowsは、タスクスケジューラAPIを提供しているため、WSHやPowerShellなどのスクリプティング言語、C++/C#などのコンピュータ言語からも利用が可能だ。
毎日/毎週/毎月などの定期的な実行や、PCの起動時、ユーザーのログイン時、PCがアイドルになったときなどのタイミングで、任意のプログラムを実行できる。また、タスクスケジューラからは、プログラムを管理者権限で起動させることにも対応している。
タスクスケジューラ・アプリ
GUIプログラムでもコマンドでも、Windowsのタスクスケジュール機能としては同じものを扱う。ここではタスクスケジューラ・アプリを見ることで、Windowsのタスクスケジュール機能を見ていこう。このアプリを理解できれば、スクリプトでもコマンドでもAPIでも記述が異なるだけで基本的な考え方は同一である。
タスクスケジューラ機能は、「タスク」を登録して管理する。「タスク」は、「トリガー」が成立し、かつ「条件」が満たされたときに「操作」(プログラム)を実行する処理だ。
ただし、ユーザーがマシンの前で見守って実行するものではないために、いくつかの安全策がある。たとえば、プログラムがいつまでたっても終了しない、あるいは次の実行をするときに、同じタスクで前回起動したプログラムが実行中だったという場合などだ。普通にWindowsを使っているときでも遭遇する状況だが、タスクスケジューラ機能では、ユーザーの操作が不要、あるいはできないことを前提にしているため、事前にタスクにさまざまな条件を指定しておく必要がある。
タスクスケジューラ・アプリを起動すると全体は大きく4つの領域に分かれている。
左側の領域は「操作ウィンドウ」と呼ばれ、代表的な操作を登録してある領域であり、ツールバー左端のボタンでオフにできる。そもそもこのウィンドウは、「Microsoft管理コンソール」(MMC、Microsoft Management Console)のウィンドウなので、イベントビューアーやコンピュータの管理などと同じ構造である。
右側が「コンソールツリーウィンドウ」で、登録されているタスクがツリー構造で表示される。中央上の部分は、コンソールツリーウィンドウで選択したフォルダーに含まれる「タスク」のリストが表示される。ここは特に名称を持たないようなので、この記事では「タスクリストウィンドウ」と呼ぶことにする。この下は「プレビューウィンドウ」と呼ばれ、上で選択したタスクの情報が表示される。
タスクの登録は、コンソールツリーウィンドウでフォルダを選択して「操作」メニューの「タスクの作成」を選び、「タスクの作成」ダイアログボックスを表示させる。既存のタスクの編集は「プロパティ」ダイアログボックスでする。フォルダーによっては、アクセス権が設定されていて、ユーザーが新規タスクを登録できず、メニュー項目も出ないことがある点に注意してほしい。
基本的にユーザーがタスクを登録する場合、コンソールツリーウィンドウで「タスク スケジューラ ライラブラリ」を右クリックして「新しいフォルダー」を選択し、自分用のフォルダーを作ることをお勧めする。このようにすることで、自分で作成したタスクだけをタスクリストウィンドウに表示させることができる。
タスクのプロパティ
タスクのプロパティ/タスクの作成ダイアログの設定項目が、Windowsが管理する「タスク」の基本的な情報を網羅する。なので、このダイアログを理解することでWindowsのタスクスケジューラ機能の基本を理解できる。
ここには、「全般」「トリガー」「操作」「条件」「設定」の5つのタブと「履歴」タブがある。
「履歴」タブは、タスクの実行履歴を表示するためのものだが、デフォルトではすべてのタスクの履歴記録がオフになっている。履歴が無効でも、タスクリストウィンドウには、前回の実行日時と実行結果が表示され、これで用が足りることがほとんどだ。なお、タスクの新規作成時には「履歴」タブは表示されない。
「全般」タブには、タスクの基本情報を登録する。タスクの名前や実行するユーザーアカウント名などだ。また、ここで「最上位の特権で実行する」を選択すると管理者ユーザーアカウントによるタスクならば管理者権限でプログラムを起動できる。
Windows PowerToysは、ユーザーのログイン時に自動的に起動する設定が可能だが、その機能の一部は管理者権限が必要になる。スタートメニューの「オートスタート」やレジストリからの自動実行では、セキュリティ上の理由から、一般ユーザー権限での起動しかできず、管理者での起動はできない。このため、PowerToysはタスクスケジューラを使って、自分自身を管理者権限でユーザーログイン時に起動するように登録している。
「トリガー」タブは、タスクの実行開始条件を指定する。複数のトリガーを指定でき、トリガーのどれか1つが成立すればタスクの実行開始条件となる。
トリガーは、以下の表のように大きく10種類ある。
このうち「スケジュールに従う」が時刻に関連して起こるトリガーで、「1回」「毎日」「毎週」「毎月(日付または曜日)」の起動パターンと、繰り返しを終了する日時を指定できる。
「イベント時」は特定のイベントが発生し、これがイベントログに記録されたタイミングでの実行だ。そもそもイベントスケジューラは、プロセスとしての優先度が高くなく、何かに応じて即座に、あるいはリアルタイムでタスクを起動するのではなく、システムの負荷状態やスリープ状態などによっては、条件を満たしたタイミングと実行のタイミングが秒単位以上でずれる可能性がある。このため「イベント発生からXミリ秒以内」のような正確なタイミングで何かを実行することはできないと考えておいた方がいい。
「操作」タブは、起動するプログラムを登録する。
機能としては、メール送信やメッセージ表示(メッセージボックス)があるが、現在では「非推奨」で、実行ファイルによるプログラム起動のみと理解したほうがよい。なお、「プログラム/スクリプト」欄には、実行ファイルへのフルパスのみを指定し、コマンドライン引数は必ず「引数の追加(オプション)」に別に記述する。「開始(オプション)」は、実行ファイルのカレントディレクトリをフルパスで指定する。引数・カレントディレクトリともに「オプション」とあるのは、指定が必須ではないという意味である。
「条件」タブは、トリガーが成立したとき、プログラムを起動する条件を指定するもの。ここにある「タスクを実行するためにスリープを解除する」を使うと、スリープ状態にあるマシンが自動で復帰してタスクを実行できる。また、特定のネットワークに接続しているときのみ、AC電源で動作しているときのみ、アイドル時のみ、といった条件を指定できる。
「設定」は、タスク自体の設定項目である。「タスクを要求時に実行する」は、タスクリストウィンドウで、タスクを選択して「実行する」を選択したときに実行するかどうかを設定するもの。これをオフにしても、トリガー条件などでタスクは実行される。トリガーによるタスクの実行を止めるには、タスクリストウィンドウでタスクを選択して右クリックメニューで「無効」を設定する。
「タスクを要求時に実行する」をオフにしておくとタスクの手動起動を禁止できる。特に管理者権限を指定した場合には、オフにして手動実行(schtasks.exeコマンドからの起動など)を禁止したほうがよい。過去には、タスクスケジューラにプログラムを登録して管理者権限を奪うというマルウェアがあった。
起動時に管理者権限でアプリを起動する、アイドル時間に作業するなど、タスクスケジューラには意外に使い道がある。スケジュール指定では、毎月の最終日、あるいは最終週といった指定が可能で、スリープ状態を解除して夜中に無人で実行することもできる。
ただし、そこはコンピュータのすることなので、実行するプログラムは事後に処理が取り消し可能なものにしておいたほうが無難である。特に自作のスクリプトは十分注意して作成する必要がある。タスクスケジューラを使うよりも、タスクスケジューラで問題を起こさないスクリプトを書く方が格段に難しいのだ。
この記事に関連するニュース
-
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた
ASCII.jp / 2024年11月24日 10時0分
-
Windows Subsystem for Linuxガイド 第41回 WSL GUI設定
マイナビニュース / 2024年11月7日 15時31分
-
「Windows 10 22H2」の9月度プレビュー更新プログラムに問題/Chromeの速度低下解決やメモリセーバーなど純正ツール登場
ITmedia PC USER / 2024年11月3日 7時5分
-
kintoneでゼロから始めるノーコード開発 第11回 アクセス権の設定と管理者ユーザーの追加
マイナビニュース / 2024年11月1日 11時0分
-
Windows 11 向け更新プログラム「KB5044384」リリース、sfcコマンドの不具合解消
マイナビニュース / 2024年10月29日 8時48分
ランキング
-
1愛猫がコタツを出たり入ったり→何してるのかのぞいてみると…… じわっと涙腺が緩む“真相”に「やさしい子」「なんてかわいいの」
ねとらぼ / 2024年11月27日 8時0分
-
2「存在したのか」 ハードオフに8800円で売られていた“謎のミシン”の正体に仰天 「珍品中の珍品」「レアすぎる」「お買い得」
ねとらぼ / 2024年11月27日 7時50分
-
3クレジットカードを少額で不正利用されていない? 巧妙な新手口を解説
ITmedia エンタープライズ / 2024年11月26日 7時15分
-
4「アプリの限界」 イヤホン忘れてオンライン会議を録音→文字起こしした“狂気の結果”が340万表示 「おもろすぎ」
ねとらぼ / 2024年11月27日 8時0分
-
5ヒガシマルのうどんスープ、おいしさの秘密とは 関東ではなじみが薄い?活用方法も話題
iza(イザ!) / 2024年11月27日 13時43分
記事ミッション中・・・
記事にリアクションする
記事ミッション中・・・
記事にリアクションする
エラーが発生しました
ページを再読み込みして
ください