自動メンテナンス

メンテナンス アクティビティとは、Windows PC の正常性とパフォーマンスを維持するのに役立つアプリケーションまたはプロセスのことです。 メンテナンスには、Windows オペレーティング システム (OS) とアプリケーションを最新の状態に保ち、セキュリティをチェックし、マルウェアのスキャンを実行することが含まれます。 Windows 自動管理 (WAM) は、アプリケーションを Windows メンテナンス スケジュールにリンクするために使用できる、タスク スケジューラ API の一連の機能強化です。 具体的には、WAM を使用すると、定期的なスケジュール設定を必要とするが、正確な時間要件がないアクティビティを追加できます。 代わりに、WAM はオペレーティング システムに依存して、1 日を通してタスクをアクティブ化するための適切な時間を選択します。 システムは、ユーザーへの最小限の影響、PC のパフォーマンス、およびエネルギー効率に基づいて、これらの時間を選択します。

スケジュールされたメンテナンスのしくみ

タスク スケジューラのメンテナンス タスクは、マシンがアイドル状態で AC 電源で実行される日和見タスクです。 メンテナンス タスクの主な目的の 1 つは、PC が AC 電源に接続され、アイドル状態 (つまり、コンピューターを使用していない場合、またはマシンから離れている場合) にのみメンテナンスをスケジュールすることで、PC への影響を最小限に抑することです。 今日のメンテナンスの考え方は、マシンがユーザーの中断を最小限にして動作することです。 そのため、これらのアイドル期間を利用するために、古いスタイルのメンテナンス時間 (このトピックの後半の 「自動メンテナンス -毎日のウェイクアップ 」セクションで詳しく説明します) が改善されました。 メンテナンス時間は引き続き利用できますが、システムの正常性には日和見メンテナンスの実行が適しています。

マシンがアイドル状態と AC 電源の両方に多くの時間を費やしていない場合、タスクが枯渇する可能性があります。 遅延している場合でも、シナリオがユーザーに値を提供することを確認します。 ユーザーがマシンをアクティブに使用している場合、システムは後でメンテナンスを延期します。 また、ユーザーが PC を使用して に戻った場合は、実行中のメンテナンス タスクも中断されます。

システムは、次のアイドル期間中に中断されたメンテナンス タスクを再起動します。ただし、システムはクリティカルとしてマークされたタスクを中断しません。 代わりに、システムでは、ユーザーの操作に関係なく、重要なタスクを完了できます。

スケジュール設定の性質上、一部のスケジュールされたタスクが完了しない可能性があります。1 時間のメンテナンス期間に収まらないスケジュールされたイベントが多すぎるか、コンピューターが単にオンになっていない可能性があります。 このような場合は、期限を指定してタスクを定義できます。 期限は、システムがタスクを少なくとも 1 回正常に実行する必要がある定期的な期間として定義されます。

タスクが期限を逃した場合、メンテナンス スケジューラはメンテナンス期間中も引き続きタスクの実行を試みます。 また、スケジューラは、それ自体を通常の 1 時間の制限に制限しません。 代わりに、スケジューラは、遅延タスクを完了するためにメンテナンス期間を延長します。

システムがタスクを完了すると (エラー エラー コードを含む場合でも)、試行は成功したと見なされます。 試行が成功すると、スケジューラは通常のメンテナンス スケジュールにリセットされ、次の期間中にタスクが試行されます。

自動メンテナンス — 毎日のウェイクアップ

Windows 7 では、メンテナンス タスクはメンテナンス時間中にのみ実行され、既定では午前 3 時に実行され、グループ ポリシー経由で構成できます。 マシンはスタンバイからウェイクアップし、メンテナンス タスクを実行して、スリープ状態に戻ります。 この毎日のセッションは、試行ごとに最大 1 時間に制限されていました。 これにより、システムは既定で午前 3 時から毎日メンテナンスを実行できます。 ユーザーは、これらの設定を構成することで、メンテナンスがトリガーされる時間を再スケジュールできます。

ラップトップの出現とバッテリー寿命への重い焦点により、ほとんどの状況でS3ウェイクアップを可能にするようにマシンが構成されなくなり、一般的にDoze-To-S4(休止状態)はできるだけ早くバッテリーを節約します。 これらの変更に応じて、タスク スケジューラ (> Win7) は、期限が切れるたびにメンテナンス タスクを実行し、マシンはアイドル状態で AC 電源で実行されます。

この設定は、コントロール パネルで構成できます。

[コントロール パネル>システムとセキュリティのセキュリティ>とメンテナンスの自動メンテナンス>] を開きます。

そのため、マシンとタスクの構成方法に基づいて、この新しい構成のために、毎日のウェイクアップ動作が現在想定どおりに発生しない可能性があります。 まず、マシンが S3 対応か CS (コネクト スタンバイ) 対応かを判断できます。 これを行うには、管理者特権の Power Shell プロンプトを開き、次のコマンドを実行します。

powercfg /a

メンテナンス時間(マシンが正しく構成されている場合は、引き続き機能しますが、そうでない場合は、

  • [スリープ解除] 設定の BIOS 設定を確認します。
  • [電源オプション] で [スリープ解除タイマーを許可する] が有効になっているかどうかを確認します。 [コントロール パネル>ハードウェアとサウンド>の電源オプション>の編集 プランの設定の変更 詳細な電源設定>>を変更する スリープ>スリープ解除タイマーを許可する] をクリックします。
  • スケジュールされたタスクが次のように構成されているかどうかを確認します。
    • MaintenanceSettings: タスクは、期間、期限で構成する必要があります。
    • 有効: タスクを有効にする必要があります。
    • WakeToRun: タスクでマシンのスリープ解除を許可する必要があります。
  • CS からのウェイクをスケジュールする場合、マシンは AOAC 対応である必要があります。
  • S3 マシンでウェイクをスケジュールする場合は、
    • マシンが AC 電源で S3 に入ったかどうかを確認します。
    • システムでは、メンテナンスのグループ ポリシーでウェイクが有効になっている必要があります。

コネクト スタンバイは、AOAC 準拠システムが入力できるシステム状態です。

モダン スタンバイと S3 の違いについては、 モダン スタンバイと S3 のトピックを参照してください。

自動メンテナンス タスクの定義

任意のタスク スケジューラ タスクをメンテナンス タスクに変換できます。 これを行うには、アプリケーションを中断できることを確認する必要があります。 次に、新しい MaintenanceSettings 要素と AllowStartOnDemand 要素を使用してタスク定義を拡張する必要があります。

メンテナンス タスクの作成に関するメインの懸念事項は、システムがタスクを中断して再起動できるようにすることです。 システムはメンテナンス タスクを複数回中断する可能性があります。そのため、アプリケーションが独自の状態を保存し、任意の時刻に再開できることを確認する必要があります。 これにより、システムがタスクの同じ部分を繰り返し実行しないようにします。

アプリケーションを中断して正常に再開できることを確認したら、 MaintenanceSettings 要素と AllowStartOnDemand 要素を使用してスケジュールを定義できます。 MaintenanceSettings は、期間、期限、および排他性に従って定義されます。

  • 期間は必須であり、タスクを実行する頻度を定義します。 通常、これは"5 日に 1 回" など、複数日のサイクルの観点から定義されます。 期間は少なくとも 1 日である必要があります。つまり、タスクを 1 日に複数回実行するようにスケジュールすることはできません。
  • 期限は省略可能で、スケジューラがユーザーに通知するか緊急メンテナンスを実行する前にタスクを完了できない期間を定義します。 期限は期間より長くする必要があります。つまり、システムは、ユーザーに通知する前に少なくとも 1 回タスクを試行する機会が必要です。
  • また、必要に応じて、メンテナンス タスクを 排他として定義することもできます。 排他タスクは、他のメンテナンス タスクとは別に実行されます。 通常、排他タスクは、大量の CPU 時間やデータベースへの排他アクセスなど、大量のリソースを使用するタスクです。 排他タスクを開始する前に、すべての非排他メンテナンス タスクが完了します。 したがって、必要な場合にのみ、タスクを排他的として宣言する必要があります。

これに対し、 AllowStartOnDemand は、システムまたはユーザーがいつでもタスクを開始できることを示しているだけです。 これにより、システムは定期的なメンテナンス中にタスクを開始できます。 それ以外の場合は、タスクの一意のトリガーを設定する必要があります。