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

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

以前、タスクスケジューラの基本的な使い方を紹介しました。

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

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

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

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

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

※ タスクスケジューラの履歴が無効になっている場合、下記の記事を参考にして有効化しておくと良いでしょう。

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

次にありがちなのが、タスクスケジューラの設定で「ユーザがログオンしている時のみ実行する」になっている場合。
この場合、ユーザがログアウトしている場合もタスク実行されず、ユーザがログオンしていないとタスクが実行されない。
そのため、「ユーザがログオンしているかどうかにかかわらず実行する」にチェックを入れておく。
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本体のパスは以下。

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

いかがだったでしょうか。
Windowsを使うのであれば、タスクスケジューラを使う機会もそれなりにあると思いますので、
もし、「タスクスケジューラが動かない!」ってなった時はこの記事を参考にしてもらえれば幸いです。

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

こちらの記事もおすすめ!

2 件のコメント

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

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

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

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

  • コメントを残す

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

    *

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

    ABOUTこの記事をかいた人

    あいしんくいっとの中の人。

    ありきたりだけど、自分なりの視点で少しでも人の役に立つ記事をありのままに書くをモットーに。 たまには役立つことが書けると良いかな。
    聞きたいことがあれば、気軽にツイートください♪可能な範囲でお答えします。
    follow us in feedly