タスクスケジューラで実行中のタスクを自動的に停止するための設定をしていて、少しはまったのでメモを残します。
はまったところ
はまったことは、「右クリック」から「実行する」でタスクを開始すると 停止するまでの時間 で設定した時間を経過しても停止しない。
そして疑問なのが、(タスクを)停止するまでの時間 の設定が「トリガー」タブと「設定」タブに存在することです。
状況としては、登録したタスクがちゃんと動くか確認しようと思って、手動で実行しみたところ まだまだ行けます的な感じでいっこうに停止する気配がない。。。
手動で起動した場合に停止しない件の対処法
なんだかよくわからないことが多いので調べてみると、右クリックから実行した場合に実行中のまま停止しない件は、マイクロソフトのサポートページに記事がありました。
以下が原因として記載されている内容。
手動でタスクを起動する際には、タスクに設定された制限を無視するよう指定した上で、タスク スケジューラ サービスにタスクの起動を依頼します。
その結果、 [タスクを停止するまでの時間] 設定を無視してタスクが起動されるため、ユーザーが手動で明示的に停止するまで 「実行中」 のままとなります。
なんで?なんでせっかく設定したコトを無視しちゃうの??
以下が回避策として記載されている内容。
- タスクを手動で停止する
- タスクを停止するため、実行されているプロセスを強制終了する
回避策といっていいのかはまったくもって疑問ですが、理解はできました。MSの仕様というやつですね。
ただ、『(タスクを)停止するまでの時間 の設定が「トリガー」タブと「設定」タブに存在すること』の疑問は解決していないので少し検証してみました。
検証したこと
以下を前提とします。
- トリガーでタスク開始日時を指定して開始した場合
※右クリックからの手動実行だと設定が無視されるので、タスクスケジューラによって自動実行させる - 停止するまでの時間は1分間を指定
検証1
検証内容:トリガータブと設定タブの両方の設定を有効に(停止するまでの時間を指定)して、自動実行させる
結果:指定した時間を経過したら停止した
検証2
検証内容:トリガータブの設定のみ有効に(停止するまでの時間を指定)して、自動実行させる
結果:指定した時間を経過しても停止しない
検証3
検証内容:設定タブの設定のみ有効に(停止するまでの時間を指定)して、自動実行させる
結果:指定した時間を経過したら停止した
結果
検証の結果からは、設定タブの設定値をみているようだ、ということがわかりました。
じゃ、トリガータブの設定値は何を指しているのか。トリガータブと設定タブでの違いは何か。と問われるとよくわかっていませんが、まとめます。
指定した時間を経過したら処理をとめたい場合は設定タブのほうで設定しておけばよさそうです。
なんだか歯切れのわるい感じになってしまいましたが、今日はこのへんで。
以上です。
↓↓↓ 持っていると便利な一冊 ↓↓↓