[TIPS] ハードウェア インベントリ情報を即時サーバーに反映させる方法

皆さん、おはようございます。

今回は、Configuration Manager (Microsoft Endpoint Configuration Manager (MECM) (旧 SCCM), Microsoft Configuration Manager) の TIPS 記事になります。

Microsoft Configuration Manager を運用している中で、たまに遭遇する、ハードウェア インベントリ情報等のインベントリ情報が対象クライアントからサーバーへ直ぐに反映されないという問題です。基本的にインベントリ情報は、一定期間の待ちがあった後にサーバーに送られるため、どうしても待ちが発生します。ただ、状況によっては、即時に反映させたいケースがあるかと思います。例えば、OS をアップグレードした後に、OS ビルドの情報を反映させたいけれど、常時使っている PC ではなく、ストックなどの PC のため一時的にしか起動しないので、直ぐにインベントリ情報を更新して、またストックにしたいとか。。。(本来の運用としてどうかと思いますが)

<概要>

Microsoft Configuration Manager のインベントリ情報をクライアント内で収集して、報告するタイミングは、通常、キューに入って、そのキューのタイミングで行われます。(ストットリング)

よく、運用時に下記の画面にて、[ハードウェア インベントリ サイクル] を [直ちに実行] をするケースがあると思います。

しかし、キューに入っている場合は下記のように、ログに記録されて、直ぐにハードウェア インベントリ情報が収集されません。

InventoryAgent.log

Inventory: Message [Type=InventoryAction, ActionID={00000000-0000-0000-0000-000000000001}, Report=Delta] already in queue. Message ignored.

そのため、即時に実施したい場合は、既存のキューを無理矢理削除して、初回同期と同じような状況にする必要があります。

<ハードウェア インベントリ情報を即時実行させる方法>

  1. まず、CcmExec (SMS Agent Host) のサービスを停止します。
    PowerShell にて、下記のコマンドを実行します。

    Stop-Service CcmExec

  2. ファイル エクスプローラーにて、下記のパスに移動します。
    C:\Windows\CCM\ServiceData\Messaging\EndpointQueues
  3. 上記のパスにある、[InventoryAgent] をリネームもしくは削除します。
  4. PowerShell に戻り、下記のコマンドを実行します。
    Start-Service CcmExec

  5. コントロール パネルから [Configuration Manager のプロパティ] を開き、[ハードウェア インベントリ サイクル] を選択し、[直ちに実行] を選択します。
  6. その後、InventoryAgent.log を確認すると、ハードウェア インベントリ情報の収集が開始されていることが確認できます。
  7. 後は、Configuration Manager サーバー側の Configuration Manager コンソールにて確認します。
    [ワークステーションのステータス] の [最終ハードウェア スキャン (クライアントのローカル時間)] が更新されていることを確認します。

<まとめ>

今回は、ハードウェア インベントリ情報を即時反映させる方法を紹介しました。通常、Configuration Manager の運用は待つことが基本ですが、今回は待たずにやるという方法です。今後も同様の TIPS を公開できればと思います。

皆さんもハードウェア インベントリ情報が直ぐに収集されない際にはこの方法を使ってみてください!