目次

タスクスケジューラー

各タスクは多重起動されない(繰り返し実行する設定でも現在のタスクが終了しない限り、次のタスクは実行されない)

ログが出力されない場合

原因は、作業フォルダの設定が無いため
作業フォルダの設定は、実行するプログラムを指定する際にある「開始(オプション)(T):」にログを出力するフォルダを指定する。
参照:Winのタスクスケジューラが実行されないときの対応

もしくは、実行するプログラムがバッチファイルであれば、バッチ内で下記コードを記述してカレントフォルダを指定する。

cd /d %~dp0

繰り返し時間をプルダウン以外にしたい場合

プルダウン・リストボックスにない間隔は、「1234 秒間」「12 分間」「3 時間」「01:23:45」といったように直接入力できる。

継続時間の仕様

タススケジューラーの仕様
https://docs.microsoft.com/ja-jp/windows/win32/taskschd/repeating-a-task

繰り返し間隔が1分、繰り返し時間が4分であるトリガーを含むタスクを登録すると、タスクは5回開始されます。5回の繰り返しは、次のパターンで定義できます。

  1. タスクは最初の1分の始めに始まります。
  2. 次のタスクは最初の1分の終わりに始まります。
  3. 次のタスクは2分の終わりに始まります。
  4. 次のタスクは3分の終わりに始まります。
  5. 次のタスクは4分の終わりに始まります。

毎日6:00から繰り返し間隔1時間で4:00と5:00の監視は外したい場合に継続時間22時間とすると4:00の監視は動作してしまうので、継続時間は想定より1回分少ない21時間で設定する。
※設定を継続時間1日から22時間に変更した初回は3:00の監視が動作せず、次の日は4:00の監視は動作した。

コマンドプロンプト画面を表示

全般タブのセキュリティオプションで「ログオンしているときのみ実行する」とする。
タスクマネージャーで、「Console」ユーザーにメッセージ送信する。

逆に「ログオンしているかどうかにかかわらず実行する」になっていれば、必ずバックグラウンドで実行されるので、コマンドプロンプトの姿を見ることはできません。

PowerShellの青い画面を非表示

タスクスケジューラーでPowerShellを動かすと一瞬青い画面が表示される。これを非表示化したい。

conhost.exe –headless を使用することで、powershell の一瞬青い画面が表示されなくなります。
PowerShellスクリプトを非表示で実行するための効果的な方法と手順 - conhost.exeを使った方法

サンプル

プログラムconhost.exe
引数の追加–headless powershell -NoProfile -ExecutionPolicy Bypass D:\web_projects\wh_rdp\GetClientName.ps1
開始D:\web_projects\wh_rdp

NoProfileは、PowerShellの実行時に読み込む環境情報を読み込まないため、起動が多少速くなる 開始(オプション)のパスはPowerShellスクリプトの作業用の「カレントディレクトリ」を指定するため

タスクスケジューラーのフォルダ作成

Use PowerShell to Create Scheduled Tasks Folders

ルート直下に「Test」フォルダ作成を作成する。

$scheduleObject = New-Object -ComObject schedule.service
$scheduleObject.connect()
$rootFolder = $scheduleObject.GetFolder("\")
$rootFolder.CreateFolder("Test")

タスクスケジューラーのエラーコード

コード説明
0 (0x0)この操作は正しく終了しました。
1 (0x1)関数が正しくありません。
2 (0x2)指定されたファイルが見つかりません。

英語のところは日本語に翻訳する。

トラブル対応

タスクが終了しない

タスクが実行するバッチ内で、pause コマンドが入ったままになっていた。

0x8004131F

0x8004131F:An instance of this task is already running.
0x8004131F:このタスクのインスタンスは既に実行中です。

対処方法として、タスクマネージャーで実行中のcmdを終了させる。
どれかはコマンドライン引数で判断する。

0x800710E0

サーバー起動時に発生、再起動では発生していない。
0x800710E0:オペレーターまたは管理者が要求を拒否しました。

対処方法として、タスクスケジューラーの条件タブの「コンピューターをAC電源で使用している場合のみタスクを開始する」をオフに設定する。

0x80070002

0x80070002:指定されたファイルが見つかりません。

対処方法として、指定のファイルが見つからないので設定を見直す。

0x41303

0x41303:タスクは実行されていません。

対処方法として、タスクを実行する。もしくはタスクスケジューラーの開始日を未来の日付にする。

操作を2つ以上設定したタスクの実行が失敗

操作タブにbat実行等2つ以上設定している場合にサーバ起動後の初回とそれ以降の自動実行がエラーになる場合がある。

現象

タスク スケジューラにて、タスクに “操作” を複数 (2 つ以上) 登録した場合、タスクのスケジュール時刻がスキップされたタイミング以降に、タスクがスケジュール実行されなくなる問題があります。

操作を 2 つ以上設定したタスクの実行が失敗する問題について

対応

[設定] タブにて「タスクスケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」にチェックを入れる。

対処策

操作を1つにしていただくことで回避が可能