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

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

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

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

重要

  • 一部のセキュリティ ソフトウェアでは、c:\windows\ccm\scriptstore から実行されているスクリプトがブロックされる場合があります。 これにより、CMPivot クエリの正常な実行を防ぐことができます。 一部のセキュリティ ソフトウェアでは、CMPivot PowerShell の実行時に監査イベントやアラートが生成される場合もあります。
  • 一部のマルウェア対策ソフトウェアは、スクリプトの実行機能または CMPivot 機能Configuration Managerに対して誤ってイベントをトリガーする可能性があります。 %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 Endpoint Manager\AdminConsole\bin\CMPivot.exe"証明書を表示し、証明書パスからコード署名証明書をエクスポートします。 次に、マネージド デバイス上の マシン信頼された発行元 ストアにインポートします。 このプロセスは次のブログで使用できますが、証明書パスからコード署名証明書をエクスポートしてください:Intuneを使用して信頼された発行元に証明書を追加する

アクセス許可

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

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

CONFIGURATION MANAGER バージョン別の CMPivot アクセス許可

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

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

制限事項

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

CMPivot を開始する

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

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

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

    • クエリ文字列に追加する エンティティ のいずれかを選択します。

    • テーブル演算子集計関数スカラー関数のリンクは、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 以降では、もう一度 [デバイスのクエリ] ボタンを使用するか、CtrlF5キーを押 + して、クライアントがクエリのデータを再度取得するように強制します。 クエリ デバイスを再度使用すると、トラブルシューティング中など、最後のクエリ以降にデバイスでデータが変更されると予想される場合に便利です。 最初の結果が返された後に [クエリの実行 ] を再度選択すると、CMPivot がクライアントから既に取得したデータのみが解析されます。

Ctrl + F5 がクライアントにデータを強制的に再度取得するためのショートカットであることを示すクエリ デバイスのもう一度ボタンのスクリーンショット。

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

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

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

CMPivot と Community ハブへの投稿には、次の要件が必要です。

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

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

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

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

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

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

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

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

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

  8. コントリビューションが完了したら、[ 自分 ] タブからいつでもクエリにアクセスできます。

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

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

注:

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

CMPivot のシナリオの例

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

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

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

Service

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

Service | summarize dcount( Device ) by Name

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

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

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

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

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

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

例 3: BIOS バージョン

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

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

例 4: 空きディスク領域

ネットワーク ファイル サーバーに大きなファイルを一時的に格納する必要がありますが、どのファイルに十分な容量があるかわからない場合。 ファイル サーバーのコレクションに対して CMPivot を開始し、 Disk エンティティに対してクエリを実行します。 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 の下線付きエンティティの例

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

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

ログ ファイル

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

サーバー側:

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

クライアント側:

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

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

次の手順