クライアントのコンピューター ポリシー処理についての動作説明

Published: / Last update:
この記事の内容
  1. 全体の流れ
  2. 検証環境について
  3. 各ステップとログの追跡方法
    1. 関連ログ
    2. テスト検証の情報
    3. ステップ 1 : コンピューター ポリシーの取得および評価サイクルを実行する
    4. ステップ 2 : 管理ポイントへコンピューター ポリシー割り当てを要求する
    5. ステップ 3 : コンピューター ポリシー割り当てを受信する
    6. ステップ 4 : ポリシー本体をダウンロードする
    7. ステップ 5 : ポリシーをコンパイルして WMI へ格納する
    8. ステップ 6 : 設定を評価して適用し、各コンポーネントへ通知する
  4. よく確認する失敗メッセージ
  5. 参考リンク

皆様、こんにちは。Configuration Manager / WSUS サポート チームです。

本記事では、Microsoft Configuration Manager (ConfigMgr) のクライアントが [コンピューター ポリシー] を取得し、適用するまでの流れとログの確認方法をご案内します。
クライアントがサイクルを実行して管理ポイント [MP] へポリシー割り当てを要求し、割り当てとポリシー本体を受信して、Windows Management Instrumentation [WMI] へ格納し、評価と適用を完了するまでを対象とします。

サイト サーバー側でコンソール操作や展開設定の変更からポリシーを生成する処理、および [ユーザー ポリシー] の処理は、本記事の対象外です。

全体の流れ

コンピューター ポリシー処理は、概ね次の順序で進みます。

  1. [コンピューター ポリシーの取得および評価サイクル] を実行します。
  2. 管理ポイントへコンピューター ポリシー割り当てを要求します。
  3. コンピューター ポリシー割り当て (完全または差分) を受信します。
  4. ポリシー本体をダウンロードします。
  5. ポリシーをコンパイルし、WMI の [RequestedConfig] 名前空間へ格納します。
  6. 設定を評価して適用し、各コンポーネントへ通知します。

検証環境について

本記事のログ抜粋は、検証環境のクライアント診断ログから採取したものです。掲載する識別子、コンピューター名、ドメイン名は、いずれも検証環境の値です。

項目 値
対象クライアント <クライアント名>
サイト コード <サイト コード>
権限 SMS:<サイト コード>
管理ポイント <管理ポイント>

クライアントは、[コンピューター ポリシーの取得および評価サイクル] を一定間隔で自動実行します。この間隔は [クライアント設定] の [クライアント ポリシーのポーリング間隔] で構成し、既定値は 60 分です。

各ステップとログの追跡方法

関連ログ

クライアント ログの既定の保存先は C:\Windows\CCM\Logs です。

ログ名 主な用途
PolicyAgent.log コンピューター ポリシー割り当ての要求、受信、コンパイル、適用の全体を確認します。
CcmMessaging.log 管理ポイントとの HTTP または HTTPS 通信、およびポリシー要求メッセージのキュー処理を確認します。
DataTransferService.log Background Intelligent Transfer Service [BITS] によるポリシー本体のダウンロードを確認します。
PolicyAgentProvider.log 受信したポリシーの WMI クラスおよびインスタンスへの反映を確認します。
PolicyEvaluator.log クライアントでのポリシー評価と適用状況を確認します。

テスト検証の情報

本記事では、次のコンピューター ポリシー割り当てを 1 件受信したサイクルを例に説明します。

項目 値
クライアント ID <クライアント ID>
割り当て ID <割り当て ID>
ポリシー ID <ポリシー ID>

本記事のログ抜粋では、同じ ID の紐づきを視覚的に追跡できるよう、次の色で統一しています。

色 ID の種類 用途
青色 クライアント ID クライアントを識別し、複数ログにまたがる処理を関連付けます。
黄色 割り当て ID 受信したポリシー割り当てとコンパイル処理を関連付けます。
緑色 ポリシー ID ポリシー本体、WMI への格納、適用を関連付けます。

ステップ 1 : コンピューター ポリシーの取得および評価サイクルを実行する

クライアントは、次のいずれかの契機で [コンピューター ポリシーの取得および評価サイクル] を実行します。

  • [クライアント ポリシーのポーリング間隔] に基づく定期実行 (既定で 60 分、ランダム遅延あり)
  • コンソールからの [クライアント通知] による [コンピューター ポリシーのダウンロード]
  • クライアントの [コントロール パネル] - [Configuration Manager] - [操作] タブ - [コンピューター ポリシーの取得および評価サイクル] - [今すぐ実行]
  • 管理者として実行した Windows PowerShell からのトリガー

コマンドで実行する場合は、次のようにトリガー ID を指定します。トリガー ID {00000000-0000-0000-0000-000000000021} が [コンピューター ポリシーの取得および評価サイクル] です。

1
Invoke-WmiMethod -Namespace root\ccm -Class SMS_Client -Name TriggerSchedule -ArgumentList "{00000000-0000-0000-0000-000000000021}"

サイクル自体の専用の成功メッセージはありません。実行された結果は、次のステップの [PolicyAgent.log] における割り当て要求として記録されます。

ステップ 2 : 管理ポイントへコンピューター ポリシー割り当てを要求する

サイクルが実行されると、クライアントは権限 (Authority) に対してコンピューター ポリシー割り当てを要求します。

Requesting Machine policy assignments from authority 'SMS:<サイト コード>'

要求メッセージは [CcmMessaging.log] のキュー処理を経て管理ポイントへ送信されます。ポリシー要求に関するキューには、次のものがあります。

1
2
3
Initialized queue processor 'PolicyAgent_RequestAssignments'. Enabled=true Concurrency=5
Initialized queue processor 'PolicyAgent_ReplyAssignments'. Enabled=true Concurrency=5
Initialized queue processor 'PolicyAgent_PolicyDownload'. Enabled=true Concurrency=5

管理ポイントとの通信が成功すると、[CcmMessaging.log] に対象ホストへの CCM_CcmHttp_Status が HRESULT = "0x00000000" および StatusCode = 0 で記録されます。

instance of CCM_CcmHttp_Status
{
	ClientID = "<クライアント ID>";
	HostName = "<管理ポイント>";
	HRESULT = "0x00000000";
	StatusCode = 0;
};

HRESULT が 0x00000000 以外の場合や、管理ポイントへのメッセージが配信されない場合は、名前解決、ファイアウォール、および管理ポイントの正常性を確認します。

ステップ 3 : コンピューター ポリシー割り当てを受信する

管理ポイントからの応答を受信すると、[PolicyAgent.log] に割り当ての受信が記録されます。
[The new cookie] は前回の取得以降の変更を管理するための情報で、これにより差分 (Delta) を判定します。

Processing Machine assignments from 'SMS:<サイト コード>'. The new cookie is '2023-04-08 07:54:09.703'.
Received Machine delta policy update with 1 assignments

Received Machine delta policy update with 1 assignments は、差分ポリシーとして 1 件の割り当てを受信したことを示します。初回取得や大きな変更時は、Delta ではなく完全 (Full) の応答となります。

前回から変更がない場合は、割り当てを受信せず、次のように記録されます。

[Assignment Request] No new assignments for Machine <クライアント名>

ステップ 4 : ポリシー本体をダウンロードする

割り当てを受信すると、クライアントは各割り当てに対応するポリシー本体をコンパイルします。
[PolicyAgent.log] では、割り当て ID とポリシー ID を確認できます。

Compiling policy assignment '<割り当て ID>' (ver. 1.00) from 'SMS:<サイト コード>' (2023-04-08 07:54:09.703)
Compiling policy '<ポリシー ID>' version '1.00' hash 'SHA256:1C2A94FF4F2D856E80F13B8D2F2DF9C17117AE7A4286B00DA0F6D9752AAA7D49' from 'SMS:<サイト コード>'
Policy <ポリシー ID> version 1.00 hash SHA256:1C2A94FF... already exists on client
[PolicyBodyDownload] Adding 1 policies to the queue.

already exists on client は、同一バージョンのポリシー本体をクライアントが既に保持しており、再ダウンロードが不要であることを示します。
クライアントがポリシー本体を保持していない場合は、[DataTransferService.log] に管理ポイントの [SMS_MP] からの .sms_pol のダウンロードが記録されます。ダウンロード先は C:\Windows\CCM\Staging です。

1
2
3
4
Added (source=.sms_pol?{01000003}-{<サイト コード>}.5_00,dest={01000003}-{<サイト コード>}.5.00.tmp) pair from manifest.
DataTransferService: DTSJob({304A1E69-CDD5-4069-BFEC-BCE5DEA2898E}) - created to download from 'http://<管理ポイント>:80/SMS_MP' to 'C:\Windows\CCM\Staging'.
DTSJob {304A1E69-CDD5-4069-BFEC-BCE5DEA2898E} in state 'DownloadingData'.
DTSJob({304A1E69-CDD5-4069-BFEC-BCE5DEA2898E}): Job has completed: Status : SUCCESS, Start time : 03/28/2023 13:35:55, Completion time : 03/28/2023 13:35:57, Elapsed time : 1 seconds

Status : SUCCESS が、ポリシー本体のダウンロード成功を示します。
ダウンロードに失敗する場合は、次のように BITS のエラーと対象の .sms_pol が記録されます。次の例は、管理ポイントが一時的に過負荷 (HTTP status 503) となり、ダウンロードに失敗した状態です。

1
DTSJob({7DB9C752-E223-4ECE-95D0-4185189E32A9}):CDTSJob::HandleDownloadError - BITS job {228679BF-9CB0-4448-9EBD-6DFCA021CED9} failed to download source file http://<管理ポイント>:80/SMS_MP/.sms_pol?%7B01000003%7D-%7B<サイト コード>%7D.5_00 to destination C:\Windows\CCM\Staging\{01000003}-{<サイト コード>}.5.00.tmp with error 0x801901F7

ステップ 5 : ポリシーをコンパイルして WMI へ格納する

コンパイルしたポリシーは、WMI の [\.\ROOT\ccm\policy\Machine\RequestedConfig] 名前空間へ格納されます。
[PolicyAgent.log] では、対象ポリシー ID と反映先の名前空間を確認できます。

Evaluating and applying policy 'CCM_Policy_Policy5.PolicyID="<ポリシー ID>",PolicyVersion="1.00",PolicySource="SMS:<サイト コード>"' to '\\.\ROOT\ccm\policy\Machine\RequestedConfig'
Applying policy <ポリシー ID>
[PolicyEval] Applied 1 policies successfully.

[PolicyEval] Applied 1 policies successfully. が、WMI への適用が成功したことを示します。
WMI 上のインスタンスの追加や変更は、[PolicyAgentProvider.log] に設定変更として記録されます。

1
2
3
4
--- Processing 1 settings change(s).
--- [1] __InstanceCreationEvent settings change on object CCM_ClientActions.ActionID="{00000000-0000-0000-0000-000000000101}".
--- Begin Indicating 1 settings change(s).
--- Completed Indicating 1 settings change(s).

__InstanceCreationEvent は新規作成、__InstanceModificationEvent は変更を表し、Completed Indicating までが記録されていれば、当該変更の通知が完了しています。

ステップ 6 : 設定を評価して適用し、各コンポーネントへ通知する

最後に、クライアントは [RequestedConfig] の内容を評価し、実際に適用する [ActualConfig] を更新します。
[PolicyAgent.log] または [PolicyEvaluator.log] で、次の一連の記録を確認できます。

Updating settings for machine. Update flags 0x0
Updating policy instances for user 'S-1-5-18'. Total RequestedConfig policy instance(s) : 793
New/Changed ActualConfig policy instance(s) : 0
[PolicyUpdate] Updated namespace '\\.\ROOT\ccm\policy\machine\requestedconfig' successfully

Updating settings for machine および user 'S-1-5-18' は、マシン (Local System) を対象とした処理であることを示します。
New/Changed ActualConfig policy instance(s) は、今回のサイクルで実際に変化した設定の数です。上記の例では 0 であり、受信した割り当ては既に適用済みで、実効的な変更がなかったことを示します。
[PolicyUpdate] Updated namespace '...\machine\requestedconfig' successfully が、コンピューター ポリシーの評価と適用が正常に完了したことを示します。

[PolicyEvaluator.log] には、以降の定期的な評価が記録されます。

1
2
Evaluating policy in \\.\ROOT\ccm\policy\machine\requestedconfig
Evaluated namespace '\\.\ROOT\ccm\policy\machine\requestedconfig' successfully, duration: 0 seconds

よく確認する失敗メッセージ

各ステップで処理が進まない場合は、次の記録を確認します。

  • ステップ 2 - 3: [CcmMessaging.log] の CCM_CcmHttp_Status の HRESULT が 0x00000000 以外である。管理ポイントとの通信、名前解決、ファイアウォールを確認します。
  • ステップ 4: [DataTransferService.log] に CDTSJob::HandleDownloadError と BITS のエラー コードが記録される。上記の 0x801901F7 は HTTP status 503 (管理ポイントの一時的な過負荷) を示します。管理ポイントおよび IIS の正常性を確認します。
  • ステップ 3: 常に No new assignments となり期待するポリシーを受信しない場合は、対象クライアントのコレクション所属、および展開や [クライアント設定] の対象範囲を確認します。

参考リンク