【Windows 10トラブル対策】タスクスケジューラでタスクが実行されないTech TIPS

ファイルのバックアップなど、タスクスケジューラを使って自動化を試みようと考えている人も多いのではないだろうか。しかし、タスクスケジューラにタスクを登録しても、なぜか思った通り実行されないことがある。これには幾つか原因がある。その原因と対策を紹介しよう。

» 2020年09月24日 05時00分 公開
[小林章彦デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

対象:Windows 10


タスクスケジューラでタスクが実行できない? タスクスケジューラでタスクが実行できない?
単独で実行を確認したコマンドやスクリプトが、タスクスケジューラに登録すると、なぜか正常に実行できないことがある。その主な原因と対策を紹介する。

 ファイルのバックアップなどの作業は、タスクスケジューラを使った自動化を行うと定期的に繰り返し実行できて便利だ。しかし、タスクスケジューラにタスク(コマンド)を登録しても、なぜか設定時間に実行されない、というトラブルもよく聞く。原因が分からず、タスクスケジューラの利用を諦めてしまった人もいるのではないだろうか。

 そこで本Tech TIPSでは、タスクスケジューラでタスクが実行できない、よくありがちな問題とその対応策を取り上げる。

履歴を有効化しておく

 タスクスケジューラでタスクが実行できない場合、「履歴」を見ると原因を追求しやすい。ただ、「履歴」はデフォルトでは無効になっているので、[操作]ペインの[すべてのタスク履歴を有効にする]をクリックして「履歴」を有効化しよう。これで、何が原因でエラーになっているかなどが分かるようになる。

履歴を有効化しておく(1) 履歴を有効化しておく(1)
タスクスケジューラでタスクが実行できない原因を探るには、まず「履歴」を有効にしておき、実行後、どのようなエラーが起きているのか確認しよう。[操作]ペインの「すべてのタスク履歴を有効にする」をクリックすると、「履歴」が有効になる。
履歴を有効化しておく(2) 履歴を有効化しておく(2)
履歴が有効になると、[履歴(無効)]タブが[履歴]タブに変わる。

 正しく動作するようになり、「タスク履歴」が不要になったら、[操作]ペインの[すべてのタスク履歴を無効にする]をクリックして、無効化すればよい。

コマンド名やパスが間違っている

 比較的多いと思われるのが、コマンド名の間違いや、パスが正しく記述されていないことで、タスクスケジューラがタスクを実行できないケースだ。

 タスクを作成する際、[基本タスクの作成]ウィザードの[プログラムの開始]画面でコマンドやスクリプトのファイル名を手動で入力すると、ミスを起こしやすい(タスクスケジューラにタスクを登録する方法は、Tech TIPS「【Windows 10対応】タスクスケジューラで定期的な作業を自動化する」参照のこと)。

 また、Windows 10標準ではないコマンドを実行する場合は、そのコマンドが置かれているフォルダへのパスをpath環境変数に追加しておくか、パス付きでコマンドを指定する必要がある(パスをpath環境変数に追加する方法は、Tech TIPS「Windows 10でPath環境変数を設定/編集する」参照のこと)。パス付きでコマンドを指定する場合は、[参照]ボタンをクリックして、選択するとよい。そうすることでパスを指定するのを忘れることを防げる。

コマンド名やパスが間違っている コマンド名やパスが間違っている
コマンド名やパスを手動で入力すると、タイプミスによる間違いを起こしやすい。コマンドやスクリプトは、[参照]ボタンをクリックして、[開く]ダイアログで選ぶようにしよう。パスも含むコマンド/スクリプト名が入力される。

タスクの「セキュリティオプション」に注意

 タスクスケジューラの[基本タスクの作成]ウィザードを使うと、ウィザードの指示に従うだけで簡単にタスクが作成できる。ただ、[基本タスクの作成]ウィザードで作成されるタスクは、「セキュリティオプション」で「ユーザーがログオンしているときのみ実行する」が選択された状態となっている。これでは、Windows 10をサインアウトした状態では、実行されない。また、「最上位の特権で実行する」のチェックも付けられていないため、タスクで実行するコマンドの種類によっては権限が足りず、実行できないことがある。

 タスクスケジューラの左ペインで[タスクスケジューラライブラリ]を選択し、中央の[タスクスケジューラライブラリ]ペインから作成したタスクを見つけてダブルクリックする。[<タスク>のプロパティ]ダイアログが表示されるので、[全般]タブの「セキュリティオプション」欄で、「ユーザーがログオンしているかどうかにかかわらず実行する」を選択し、「最上位の特権で実行する」にチェックを入れよう。

タスクの「セキュリティオプション」を設定する(1) タスクの「セキュリティオプション」を設定する(1)
[基本タスクの作成]ウィザードを使ってタスクを作成すると、「セキュリティオプション」の設定によってタスクが実行できないことがある。左ペインで[タスクスケジューラライブラリ]を選択して、中央の[タスクスケジューラライブラリ]のタスク一覧から作成したタスクを見つけ、ダブルクリックする。
タスクの「セキュリティオプション」を設定する(2) タスクの「セキュリティオプション」を設定する(2)
<タスク>のプロパティ]ダイアログが開くので、[全般]タブの「セキュリティオプション」を設定する。

トリガーの設定が正しいか確認する

 タスクを実行するタイミングや回数などを決める「トリガー」の設定にも注意が必要だ。毎日や毎週実行するタスクを作成する際、テスト用に「1回限り」を選択しておいて、うっかりそのままにしてしまうことがある。

 テストが成功したら、タスクの[プロパティ]ダイアログを開いて、[トリガー]タブを確認しよう。トリガーが何も指定されていない場合は、タスクが実行されないので、[新規]ボタンをクリックして、[新しいトリガー]ダイアログでトリガーの条件を設定する。なお、ここのトリガーの条件は、[基本タスクの作成]ウィザードで選択できる項目よりも細かい設定が可能だ。

トリガーの設定を確認する(1) トリガーの設定を確認する(1)
<タスク>のプロパティ]ダイアログの[トリガー]タブを開く。ここにトリガーが一覧表示される。トリガーが何も表示されていない場合は、トリバーが設定されていないので、[新規]ボタンをクリックする。何らかのトリガーが設定されているものの、思った通りのトリガーで動作していないようならば、そのトリガーを選択してから[編集]ボタンをクリックする。
トリガーの設定を確認する(2) トリガーの設定を確認する(2)
トリガーとなる条件を入力する。

 トリガーの細かい設定については、次の記事が参考になるだろう。

PowerShellのps1ファイルに注意

 PowerShellで作成したスクリプト(ps1ファイル)を[操作の編集]ダイアログの「プログラム/スクリプト」の入力ボックスに直接指定すると、スクリプトは実行されずにps1ファイルが「メモ帳」アプリで開かれてしまう。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。