0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

タスクスケジューラのタスクを一定期間停止

Posted at

背景

タスクスケジューラで無期限に定期実行(5分おきetc.)しているタスクがある。
その中に、外部サービスにアクセスするタスクがあるのだが、外部サービスが不定期にメンテナンスによりアクセスできなくなる時間帯がある。
アクセスに失敗した場合、アクセス元のバッチファイルが、エラー通知を送信する仕様にしていたため、メンテナンス時間帯にエラー通知が継続的に発報されてしまう。
定期メンテのアナウンスを受けたら、メンテナンスの計画時間中はタスクスケジューラの所定のタスクを停止することで、エラー通知が発報されることを回避したいと考えた。

環境

以下の環境で試行した。

  • Windows 11 Pro
  • Windows Server 2019

アプローチ1(結果:失敗)

操作内容が同じ2つのタスクを用意して、1つはメンテナンス予定日時の前に有効期限を指定することでタスクを停止して、
もう1つは、メンテナンスの開始予定日時の後に開始時間を指定する方法を考えた。

このアプローチは、以下の事象により実現できなかった。

トリガーの設定にて、有効期限を指定したが、有効期限の時間を過ぎてもタスクは継続して実行されてしまった。
image.png

同様の事象で詰まっていた記事を見つけた1

アプローチ2(結果:成功)

PowerShellのコマンドにより、タスクスケジューラのタスクを操作できると知った2ので、タスクを停止/再開するコマンドをタスクスケジューラで実行することにした。

タスクスケジューラの有効化/無効化を操作するコマンド

  • タスクスケジューラのタスクを無効化するコマンド
    Disable-ScheduledTask -TaskName "タスク名"
  • タスクスケジューラのタスクを有効化するコマンド
    Enable-ScheduledTask -TaskName "タスク名"

計画停止/再開タスクの作成

以下のような構成でメインのタスクと別に2つのタスクを作成した。
image.png

計画停止のタスクの設定

トリガー

  • メインのタスクを停止したい日時を「開始」 に指定する
  • 今回は停止処理を繰り返さないので、繰り返しの設定はなし
    image.png

操作

  • 操作:プログラムの開始
  • 設定
    • プログラム/スクリプト
      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    • 引数の追加
      -Command Disable-ScheduledTask -TaskName "メインのタスク"

計画開始のタスクの設定

トリガー

  • メインのタスクを再開したい日時を「開始」 に指定する
  • 今回は開始処理を繰り返さないので、繰り返しの設定はなし
    image.png

操作

  • 操作:プログラムの開始
  • 設定
    • プログラム/スクリプト
      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    • 引数の追加
      -Command Enable-ScheduledTask -TaskName "メインのタスク"

まとめ

アプローチ2の方法で、目的を達成できました。
上記記載例だと、2025/1/19の2:00にタスクが停止して、3:00にタスクが再開することになります。

  1. windowsのタスクスケジューラで指定時間を超過してもタスクが実行される話。

  2. [ScheduledTasks]https://learn.microsoft.com/ja-jp/powershell/module/scheduledtasks/?view=windowsserver2022-ps

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?