❄︎
Amazonでクリスマスギフトを贈ろう!

Windowsのタスクスケジューラでタスクが動かない!そんなときに確認したい項目6選!

ども。あいしんくいっと(@ithinkitnet)です。

以前、Windowsタスクスケジューラの基本的な使い方を紹介しました。
Windows Server 2012 R2におけるタスクスケジューラの基本的な使い方を覚えておこう。

タスクスケジューラを手順通りに設定しても「タスクスケジューラが実行されない」なんてことは良くある話です。
なので、今回はタスクスケジューラが実行されない時に確認したいポイントを6つほど挙げておきたいと思います。
なお、確認したOSは「Windows server 2012 R2」です。

タスクスケジューラが動かないときに確認したい項目6選

実行対象のバッチ/スクリプトパスに間違いは無いか

これはよくあるイージーミスですね。
タスクスケジューラで指定した場所にバッチ/スクリプトがなかったり、実行ファイル名が間違えていたり。
まず最初に疑うべきは「バッチ/スクリプトへのパスに間違いが無いか」です。

例えば、実行ファイル名が間違っていた場合、タスクスケジューラの履歴上は正常終了と出力されるものの、実際には実行されずにエラー「0x1」が出力されたりします。
windows-taskschd-error-7-20150829-0

注意
タスクスケジューラの履歴が無効になっている場合、下記の記事を参考にして有効化しておくと良いでしょう。
Windowsのタスクスケジューラで履歴が表示されない!そんな時は履歴の有効化をしよう。

「ユーザがログオンしている時のみ実行する」になっていないか

次にありがちなのが、タスクスケジューラの設定で「ユーザがログオンしている時のみ実行する」になっている場合。
この場合、ユーザがログインしてないとタスクが実行されず、ユーザがログアウトしてしまうとタスクが実行されない。
そのため、「ユーザがログオンしているかどうかにかかわらず実行する」に必ずチェックを入れておく。
windows-taskschd-error-7-20150829-1

「最上位の特権で実行する」にチェックが入っているか

このチェックも忘れがち。
これにチェックが入っていないと、バッチ/スクリプトの内容によってはタスク実行されなかったり。
なので、「最上位の特権で実行する」には必ずチェックを入れておきましょう。
windows-taskschd-error-7-20150829-2

PowerShellで作成したスクリプトの指定に気を付けろ

タスクスケジューラを使ってPowerShellで作成したスクリプトを実行する場合、スクリプトを直接指定すると何故かnotepadが起動します。
なので、PowerShellの本体を指定して、引数としてスクリプトを設定する必要があります。

直接、PowerShellで指定したスクリプトを指定してタスクを起動すると、
windows-taskschd-error-7-20150829-3

何故かnotepad.exeが起動してしまう・・・。う~ん、馬鹿なのかw
(原因としては”プログラムの関連付け”がどう、とからしいが・・・)
windows-taskschd-error-7-20150829-4

なので、PowerShellの本体を指定して、引数としてスクリプトを設定すること。
PowerShell本体のパスは以下。

PowerShell本体のパス
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
windows-taskschd-error-7-20150829-5

パスに半角カッコ”()”が入っていないか

指定するパス及び、ファイル名に”()” (半角カッコ)が入っていると何故かタスク実行されないという現象が。。。
これは驚きでしたね。たぶんタスクスケジューラのバグなんでしょうけど。

例えば、ファイル名に半角カッコが入ったスクリプトを実行しようとすると、
windows-taskschd-error-7-20150829-6

履歴上は正常終了と出力されるものの、実際にはタスクが実行されずにエラー「0x1」が出力されます。
windows-taskschd-error-7-20150829-7

ちなみに”()” (全角カッコ)だと、
windows-taskschd-error-7-20150829-7

正常に起動しちゃいます。
(どないやねん!)
windows-taskschd-error-7-20150829-8

「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックは外しておこう

念のため、「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックは外しておくと良いかも。
windows-taskschd-error-7-20150829-9

では、最後にまとめ。

タスクスケジューラが実行されないときに確認したい項目6選
  1. 実行対象のバッチ/スクリプトパスに間違いは無いか
  2. ユーザがログオンしている時のみ実行する」になっていないか
  3. 「最上位の特権で実行する」にチェックが入っているか
  4. PowerShellで作成したスクリプトの指定に気を付けろ
  5. パスに半角カッコ”()”が入っていないか
  6. 「コンピューターをAC電源で使用している場合のみタスクを開始する」のチェックは外しておこう

いかがですか。タスクスケジューラは実行されましたか?
Windowsを使うのであれば、タスクスケジューラを使う機会もそれなりにあると思いますので、サクッと動かないと焦るんですよね。。

ithinkit

タスクスケジューラが動かない!」って時はこの記事を参考にしてもらえれば幸いです。

以上、あいしんくいっとでした。

2 Comments

通りすがり

こんにちは。
タスクスケジューラに指定して動かないからバクだと騒ぐ前に一度コマンドプロンプトに貼り付けて実行してみて正しいパス指定をしているかどうか確認することをおすすめします。下記の2つはタスクスケジューラの問題ではなく、パスの指定方法が間違っていたため発生したものです。

PowerShellで指定したスクリプトを指定してタスクを起動してnotepad.exeが起動したのは、実行したPCで、「.ps1」の関連付けがnotepad.exeとなっているからです。スクリプトをダブルクリックしたときの挙動と同じです。もし、スクリプトを指定して実行したのであれば、「.ps1」の関連付けをPowerShellに変更すればよいです。

パスに半角括弧が入ると実行できないのは半角括弧が引数における特殊文字だからです。同様にアンドとパイプ(|)も使えません。これらの文字を引数として使いたい場合は^を文字の前につけてエスケープする必要があります。「無題^(1^).ps1」と設定します。

返信する
あいしんくいっと

コメントありがとうございます。
テンパった時はそれらの事が冷静に判断出来ず、判断に困るので忘れないように備忘的な記事にした次第です。。
参考になる情報を色々と教えて下さり、非常に参考になりました^^

返信する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)