Configuration Manager でのリアルタイム データのための CMPivot

Configuration Manager (現在のブランチ) に適用

Configuration Manager では、お客様がレポート目的で使用する、デバイス データの大規模な一元管理ストアを常に提供してきました。 サイトは通常、このデータを毎週収集します。 バージョン 1806 以降、CMPivot は新しいコンソール内ユーティリティで、環境内のデバイスのリアルタイム状態にアクセスできるようにしました。 ターゲット コレクション内で現在接続されているすべてのデバイスですぐにクエリを実行し、結果を返します。 次に、このデータをフィルター処理し、ツール内でグループ化します。 オンライン クライアントからのリアルタイム データを提供することで、ビジネス上の質問に迅速に回答し、問題のトラブルシューティングを行い、セキュリティ インシデントに対応できます。

たとえば、 投機的実行サイド チャネルの脆弱性を軽減するための要件の 1 つは、システム BIOS を更新することです。 CMPivot を使用すると、システム BIOS 情報をすばやく照会したり、準拠していないクライアントを検索したりできます。

重要

  • 一部のセキュリティ ソフトウェアでは、c:\windows\ccm\scriptstore から実行されるスクリプトがブロックされる場合があります。 これにより、CMPivot クエリが正常に実行されなくなる可能性があります。 一部のセキュリティ ソフトウェアは、CMPivot PowerShell の実行時に監査イベントまたはアラートを生成する場合もあります。
  • 特定のマルウェア対策ソフトウェアによって、Configuration Manager の実行スクリプトまたは CMPivot 機能に対してイベントが誤ってトリガーされることがあります。 マルウェア対策ソフトウェアが干渉することなくこれらの機能を実行できるように、%windir%\CCM\ScriptStore を除外することをお勧めします。

前提条件

CMPivot を使用するには、次のコンポーネントが必要です。

  • 対象のデバイスを、Configuration Manager クライアントの最新バージョンにアップグレードします。

  • 対象のクライアントには、PowerShell バージョン 4 以降が必要。

  • 次のエンティティのデータを収集するには、ターゲット クライアントに PowerShell バージョン 5.0 が必要です。

    • 管理者
    • Connection
    • IPConfig
    • SMBConfig
  • CMPivot と Microsoft Edge インストーラーは現在、 Microsoft Code Signing PCA 2011 証明書で署名されています。 PowerShell 実行ポリシーを AllSigned に設定した場合は、デバイスがこの署名証明書を信頼することを確認する必要があります。 Configuration Manager コンソールをインストールしたコンピューターから証明書をエクスポートできます。 "C:\Program Files (x86)\Microsoft エンドポイント マネージャー\AdminConsole\bin\CMPivot.exe" で証明書を表示し、証明書パスからコード署名証明書をエクスポートします。 次に、管理対象デバイスの コンピューター信頼された発行元 ストアにインポートします。 このプロセスは次のブログで使用できますが、必ず証明書パスからコード署名証明書をエクスポートしてください: Intune を使用して信頼された発行元に証明書を追加する

アクセス許可

CMPivot には、次のアクセス許可が必要です。

  • コレクションに対して CMPivot を実行するアクセス許可
  • インベントリ レポート読み取りアクセス許可
  • SMS スクリプト オブジェクトに対する読み取りアクセス許可
    • バージョン 2107 以降、SMS スクリプトの読み取りは必要ありません
    • CMPivot は、バージョン 2107 以降の主なシナリオの場合、SMS スクリプト読み取りを必要としません。 ただし、管理サービスがダウンしていてアクセス許可が削除されている場合は、管理サービスがフォール バックすると、CMPivot は失敗します。 CMPivot.logに示すように、503 (サービス利用不可) エラーにより管理サービスがフォールバックした場合、SMS プロバイダーは引き続き SMS スクリプトに対する読み取りアクセス許可を必要とします。
  • 既定の スコープです。
    • バージョン 2107 以降では、 既定のスコープ は必要ありません

Configuration Manager のバージョン別の CMPivot アクセス許可

1902 以前 バージョン 1906 から 2103 2107 以降
コレクションに対するスクリプトの実行アクセス許可 コレクションに対して CMPivot を実行するアクセス許可 コレクションに対して CMPivot を実行するアクセス許可
インベントリ レポート読み取りアクセス許可 インベントリ レポート読み取りアクセス許可 インベントリ レポート読み取りアクセス許可
SMS スクリプト読み取りアクセス許可 SMS スクリプト読み取りアクセス許可 該当なし

CMPivot.logに見られるように、503 (サービス利用不可) エラーにより管理サービスが SMS スクリプトにフォールバックした場合、SMS プロバイダーには引き続き SMS スクリプトに対する読み取りアクセス許可が必要です。
既定のスコープの アクセス許可 既定のスコープの アクセス許可 該当なし

制限事項

  • CMPivot は、中央管理サイト (CAS) から実行されていない限り、現在のサイトに接続されているクライアントのデータのみを返します。
    • コレクションに別のサイトのデバイスが含まれている場合、CMPivot が CAS から実行されていない限り、CMPivot の結果は現在のサイト内のデバイスからのもののみになります。
    • 環境によっては、CMPivot を CAS 上で実行するために追加のアクセス許可が必要です。 詳細については、「 バージョン 1902 での CMPivot の変更」を参照してください。
  • エンティティ プロパティ、結果の列、またはデバイス上のアクションをカスタマイズすることはできません。
  • Configuration Manager コンソールを実行しているコンピューターで同時に実行できる CMPivot インスタンスは 1 つだけです。
  • CMPivot スタンドアロンでは、コミュニティ ハブに保存されている CMPivot クエリにアクセスできません。
  • 多要素認証を使用したシングル サインオンを使用すると、Configuration Manager 2103 以前の使用時に CMPivot からコミュニティ ハブにサインインできないことがあります。

CMPivot を起動する

  1. Configuration Manager コンソールで、プライマリ サイトまたは CAS に接続します。 [ 資産とコンプライアンス ] ワークスペースに移動し、[ デバイス コレクション] ノードを選択します。 ターゲット コレクションを選択し、リボンの [ CMPivot の開始 ] を選択してツールを起動します。 このオプションが表示されない場合は、次の構成をチェックします。

    • アカウントに必要なアクセス許可があることをサイト管理者に確認してください。 詳細については、前提条件をご覧ください。
  2. このインターフェイスは、ツールの使用に関する詳細情報を提供します。

    • 上部にクエリ文字列を手動で入力するか、インライン ドキュメントのリンクを選択します。

    • クエリ文字列に追加するには、 エンティティ の 1 つを選択します。

    • テーブル演算子集約関数、およびスカラー関数のリンクは、Web ブラウザで言語リファレンス ドキュメントを開きます。 CMPivot は Kusto 照会言語 (KQL) を使用します。

  3. CMPivot ウィンドウを開いたままにして、クライアントからの結果を表示します。 CMPivot ウィンドウを閉じると、セッションは完了です。

    • クエリが送信された場合でも、クライアントは状態メッセージ応答をサーバーに送信します。

CMPivot の使用方法

CMPivot ウィンドウのサンプル

CMPivot ウィンドウには、次の要素が含まれています。

  1. CMPivot が現在ターゲットにしているコレクションは、上部のタイトル バーとウィンドウの下部にあるステータス バーにあります。 たとえば、上のスクリーンショットの "PM_Team_Machines" です。

  2. 左側のウィンドウには、クライアントで使用できる エンティティ が一覧表示されます。 WMI に依存しているエンティティもあれば、PowerShell を使用してクライアントからデータを取得するエンティティもあります。

    • 次の操作を行うには、エンティティを右クリックします。

      • 挿入: 現在のカーソル位置でクエリにエンティティを追加します。 クエリは自動的には実行されません。 このアクションは、エンティティをダブルクリックした場合の既定値です。 クエリを作成するときにこのアクションを使用します。

      • すべてクエリ: すべてのプロパティを含む、このエンティティのクエリを実行します。 このアクションを使用して、1 つのエンティティに対してすばやくクエリを実行します。

      • デバイスによるクエリ: このエンティティに対してクエリを実行し、結果をグループ化します。 たとえば、Disk | summarize dcount( Device ) by Name のように指定します。

    • エンティティを展開すると、各エンティティで使用できる特定のプロパティが表示されます。 プロパティをダブルクリックして、現在のカーソル位置でクエリに追加します。

  3. [ ホーム ] タブには、サンプル クエリやサポート ドキュメントへのリンクなど、CMPivot に関する一般的な情報が表示されます。

  4. [ クエリ] タブには、クエリ ウィンドウ、結果ウィンドウ、ステータス バーが表示されます。 上のスクリーンショットの例では、[クエリ] タブが選択されています。

  5. クエリ ウィンドウでは、コレクション内のクライアントで実行するクエリを作成または入力します。

    • CMPivot には Kusto Query Language (KQL) のサブセットが使用されます。

    • クエリ ウィンドウでコンテンツを切り取ったり、コピーしたり、貼り付けたりします。

    • 既定では、このウィンドウでは IntelliSense が使用されます。 たとえば、 D入力を開始すると、その文字で始まるすべてのエンティティが IntelliSense によって提案されます。 オプションを選択し、Tab キーを押して挿入します。 パイプ文字とスペース | を入力すると、すべてのテーブル演算子が IntelliSense によって提案されます。 summarizeを挿入してスペースを入力すると、IntelliSense によってすべての集計関数が提案されます。 これらの演算子と関数の詳細については、CMPivot の [ ホーム ] タブを選択してください。

    • [クエリ] ウィンドウには、次のオプションもあります。

      • クエリを実行します。

        • クライアントで現在の CMPivot クエリを再実行するには、 Ctrl キー を押しながら [実行] をクリックします。
      • クエリの履歴リストを前後に移動します。

      • ダイレクト メンバーシップ コレクションを作成します。

      • クエリ結果を CSV またはクリップボードにエクスポートします。

  6. アクティブなクライアントから返されたクエリのデータが結果ウィンドウに表示されます。

    • 使用可能な列は、エンティティとクエリによって異なります。

    • 結果テーブルまたはグラフのデータの色の彩度は、データがライブか、サイト データベースに保存されている最後のハードウェア インベントリ スキャンからのものかを示します。 たとえば、黒はオンライン クライアントからのリアルタイム データで、灰色はキャッシュ データです。

    • 列名を選択して、そのプロパティで結果を並べ替えます。

    • 列名を右クリックすると、その列の同じ情報で結果をグループ化したり、結果を並べ替えたりすることができます。

    • デバイス名を右クリックすると、そのデバイスで次の追加の操作が実行されます。

    • デバイス以外のセルを右クリックすると、次の追加操作を実行できます。

      • コピー: セルのテキストをクリップボードにコピーします。

      • 次のデバイスを表示する: このプロパティのこの値を持つデバイスを照会します。 たとえば、 OS クエリの結果から、[バージョン] 行のセルでこのオプションを選択します。 OS | summarize countif( (Version == '10.0.17134') ) by Device | where (countif_ > 0)

      • 指定しないデバイスを表示: このプロパティにこの値がないデバイスをクエリします。 たとえば、 OS クエリの結果から、[バージョン] 行のセルでこのオプションを選択します。 OS | summarize countif( (Version == '10.0.17134') ) by Device | where (countif_ == 0) | project Device

      • Bing: 既定の Web ブラウザーを起動して、この値をクエリ文字列として https://www.bing.com します。

    • ハイパーリンクされたテキストを選択して、その特定の情報に基づいてビューをピボットします。

    • 結果ウィンドウには、20,000 行を超える行が表示されません。 クエリを調整してデータをさらにフィルター処理するか、より小さなコレクションで CMPivot を再起動します。

  7. ステータス バーには、次の情報が左から右に表示されます。

    • ターゲット コレクションへの現在のクエリの状態。 このステータスには次のものが含まれます。

      • クエリを完了したアクティブなクライアントの数 (3)

      • クライアントの合計数 (5)

      • オフライン クライアントの数 (2)

      • エラーを返したすべてのクライアント (0)

        例: Query completed on 3 of 5 clients (2 clients offline and 0 failure)

    • クライアント操作の ID。 例: id(16780221)

    • 現在のコレクション。 例: PM_Team_Machines

    • 結果ペインの行の総数。 たとえば、1 objects のように指定します。

ヒント

バージョン 2107 以降では、[ デバイスを再度照会 ] ボタンまたは Ctrl + F5 キーを使用して、クライアントにクエリのデータを再度取得させます。 クエリ デバイスを再度 使用すると、トラブルシューティング中など、最後のクエリ以降にデバイスのデータが変更されると予想される場合に便利です。 最初の結果が返された後に もう一度 [クエリの実行] を選択すると、CMPivot がクライアントから既に取得したデータのみが解析されます。

Ctrl + F5 がクライアントに強制的にデータを再度取得させるショートカットであるというヒントを示す [デバイスを再度クエリする] ボタンのスクリーンショット。

CMPivot からコミュニティ ハブにクエリを発行する

(バージョン 2107 以降に適用)

バージョン 2107 以降では、CMPivot ウィンドウから直接コミュニティ ハブに CMPivot クエリを発行できます。 CMPivot を使用してクエリを直接送信すると、コミュニティ ハブへの投稿が簡単になります。

CMPivot とコミュニティ ハブに投稿するには、次の要件が必要です。

  1. [ 資産とコンプライアンス] ワークスペースに移動し、[ デバイス コレクション] ノードを選択します。

  2. ターゲット コレクション、ターゲット デバイス、またはデバイスのグループを選択し、リボンの [CMPivot の起動 ] を選択してツールを起動します。

  3. CMPivot ウィンドウで、メニューの [コミュニティ ハブ] アイコンを選択します。

    コミュニティ ハブ アイコン

  4. [ サインイン] を選択してから、GitHub にサインインします。

  5. CMPivot クエリを作成し、[ クエリの実行] を選択して期待どおりに機能することを確認します。

    • 必要に応じて、フォルダー アイコンを選択してお気に入りリストにアクセスし、既に作成したクエリを使用します。
  6. クエリを送信する準備ができたら、CMPivot のコミュニティ ハブ ウィンドウの上部にある [公開 ] リンクを選択します。

    発行タブが表示されている CMPivot のコミュニティ ハブ ウィンドウのスクリーンショット

  7. クエリに [名前] と [説明] を指定し、[発行] ボタンを選択してクエリをコミュニティ ハブに送信します。

  8. 投稿が完了すると、[ 自分 ] タブからいつでもクエリにアクセスできます。

  9. GitHub のプル リクエスト (PR) を表示するには、 https://github.com/Microsoft/configmgr-hub/pulls に移動します。 コミュニティ ハブ ノードの [ハブ] ページからも PR リンクにアクセスできます。

    • PR は GitHub リポジトリに直接送信しないでください。

注:

  • 現時点では、CMPivot を使用してクエリを発行する場合、発行後に編集または削除することはできません。
  • コミュニティ ハブは、Configuration Manager コンソールから実行した場合にのみ CMPivot で使用できます。 コミュニティ ハブは、 スタンドアロンの CMPivot からは使用できません。

CMPivot のシナリオの例

以下のセクションでは、お使いの環境で CMPivot を使用する方法の例を示します。

例 1: 実行中のサービスを停止する

セキュリティ管理者から、経理部門のすべてのデバイスで Computer ブラウザー サービスをできるだけ早く停止および無効化するように求められます。 会計内のすべてのデバイスのコレクションで CMPivot を開始し、サービス エンティティで [すべてクエリ] を選択します。

Service

結果が表示されたら、[ 名前 ] 列を右クリックし、[ グループ化] を選択します。

Service | summarize dcount( Device ) by Name

ブラウザー サービスの行で、dcount_列のハイパーリンクされた番号を選択します。

Service | where (Name == 'Browser') | summarize count() by Device

すべてのデバイスを複数選択し、選択内容を右クリックして、[ スクリプトの実行] を選択します。 これにより、[スクリプトの実行] ウィザードが起動し、サービスの停止と無効化に使用する既存のスクリプトが実行されます。 CMPivot を使用すると、すべてのアクティブなコンピューターのセキュリティ インシデントにすばやく対応し、[スクリプトの実行] ウィザードで結果を表示できます。 次に、フォローアップして構成ベースラインを作成し、コレクション内の他のコンピューターが将来アクティブになった場合にそれらを修復します。

ブラウザー サービスとスクリプトの実行アクションの CMPivot の例

例 2: アプリケーション エラーを事前に解決する

運用メンテナンスを予防的に行うには、週に 1 回、管理しているサーバーのコレクションに対して CMPivot を実行し、AppCrash エンティティで [すべて照会] を選択します。 [ファイル名] 列を右クリックし、[昇順で並べ替え] を選択します。 1 台のデバイスでは、毎日 03:00 頃のタイムスタンプを持つ sqlsqm.exe に対して 7 つの結果が返されます。 いずれかの行でファイル名を選択し、それを右クリックして [Bing It] を選択します。 Web ブラウザーで検索結果を閲覧すると、詳細情報と解決策が記載されたこの問題に関する Microsoft サポート記事が表示されます。

例 3: BIOS バージョン

投機的実行サイド チャネルの脆弱性を軽減するための要件の 1 つは、システム BIOS を更新することです。 まず、BIOS エンティティのクエリを実行します。 次に、バージョン プロパティでグループ化します。 次に、"LENOVO - 1140" などの特定の値を右クリックし、[ デバイスを表示] を選択します

Bios | summarize countif( (Version == 'LENOVO - 1140') ) by Device | where (countif_ > 0)

例 4: 空きディスク領域

大きなファイルをネットワーク ファイル サーバーに一時的に保存する必要があるが、どれに十分な容量があるかがわからない。 ファイル サーバーのコレクションに対して CMPivot を開始し、 ディスク エンティティに対してクエリを実行します。 CMPivot のクエリを変更して、リアルタイム ストレージ データを含むアクティブなサーバーの一覧をすばやく返します。

Disk | where (Description == 'Local Fixed Disk') | where isnotnull( FreeSpace ) | order by FreeSpace asc

CMPivot スタンドアロン

CMPivot はスタンドアロン アプリとして使用できます。 CMPivot スタンドアロンは英語でのみ利用可能です。 Configuration Manager コンソールの外部で CMPivot を実行して、環境内のデバイスのリアルタイム状態を表示します。 この変更により、最初に本体をインストールせずに、デバイスで CMPivot を使用できるようになります。

ヘルプデスクやセキュリティ管理者など、コンピューターにコンソールをインストールしていない他のペルソナと CMPivot の機能を共有できます。 これらの他のペルソナは、CMPivot を使用して、従来使用している他のツールと共に Configuration Manager にクエリを実行できます。 この豊富な管理データを共有することで、ロールを超えたビジネス上の問題を積極的に解決するために協力して取り組むことができます。

CMPivot をスタンドアロンでインストールする

  1. CMPivot を実行するために必要なアクセス許可を設定します。 詳細については、「 前提条件」を参照してください。 アクセス許可がユーザーに適切な場合は、 セキュリティ管理者ロール を使用することもできます。

  2. 次のパスで CMPivot アプリ インストーラーを見つけます。 <site install path>\tools\CMPivot\CMPivot.msi。 そのパスから実行することも、別の場所にコピーすることもできます。

  3. CMPivot スタンドアロン アプリを実行すると、サイトへの接続を求められます。 サーバーの全体管理またはプライマリ サイト サーバーの完全修飾ドメイン名またはコンピューター名を指定します。

    • CMPivot スタンドアロンを開くたびに、サイト サーバーに接続するように求められます。
  4. CMPivot を実行するコレクションを参照し、クエリを実行します。

    クエリを実行するコレクションを参照します

注:

  • スクリプトの実行リソース エクスプローラー、Web 検索などの右クリック操作は、CMPivot スタンドアロンでは使用できません。 CMPivot スタンドアロンの主な用途は、Configuration Manager インフラストラクチャから独立してクエリを実行することです。 セキュリティ管理者を支援するために、CMPivot スタンドアロンには Microsoft Defender セキュリティ センターに接続する機能が含まれています。
  • CMPivot スタンドアロンを使用して、ローカル デバイス クエリの評価を実行できます。

CMPivot 内

CMPivot は、Configuration Manager の "高速チャネル" を使用してクライアントにクエリを送信します。 サーバー間のこの通信チャネルは、クライアント通知操作、クライアントの状態、Endpoint Protection などの他の機能でも使用されます。 クライアントは、同様に迅速な状態メッセージ システムを介して結果を返します。 状態メッセージは一時的にデータベースに保存されます。 クライアント通知に使用されるポートの詳細については、「 ポート」 の記事を参照してください。

クエリと結果はすべてテキストです。 エンティティ InstallSoftwareProcess は、最大の結果セットのいくつかを返します。 パフォーマンス テスト中に、これらのクエリに対する 1 つのクライアントからの状態メッセージ ファイルの最大サイズは 1 KB 未満でした。 50,000 のアクティブなクライアントがある大規模な環境にスケーリングした場合、この 1 回限りのクエリでは、ネットワーク全体で 50 MB 未満のデータが生成されます。 下線が付いたウェルカム ページのすべての項目は、クライアントごとに 1 KB 未満の情報を返します。

CMPivot の下線付きエンティティの例

Configuration Manager 1810 以降、CMPivot は拡張ハードウェア インベントリ クラスを含むハードウェア インベントリ データを照会できます。 これらの新しいエンティティ (ウェルカム ページで下線が付いていないエンティティ) は、特定のハードウェア インベントリ プロパティに対して定義されているデータの量に応じて、はるかに大きなデータ セットを返す場合があります。 たとえば、クエリを実行する特定のデータによっては、"InstalledExecutable" エンティティから、クライアントごとに数 MB のデータを返す場合があります。 CMPivot を使用して大規模なコレクションから大規模なハードウェア インベントリ データ セットを返す場合は、システムのパフォーマンスとスケーラビリティに注意してください。

クエリは 1 時間後にタイムアウトします。 たとえば、コレクションに 500 台のデバイスがあり、そのうち 450 台のクライアントが現在オンラインであるとします。 これらのアクティブなデバイスはクエリを受信し、ほぼ即座に結果を返します。 CMPivot ウィンドウを開いたままにしておくと、他の 50 のクライアントがオンラインになると、クエリも受信し、結果を返します。

ログ ファイル

CMPivot の操作は、次のログ ファイルに記録されます。

サーバー側:

  • SmsProv.log
  • BgbServer.log
  • StateSys.log

クライアント側:

  • CcmNotificationAgent.log
  • Scripts.log
  • StateMessage.log

詳細については、「 ログ ファイルCMPivot のトラブルシューティング」を参照してください。

次の手順