ホーム テクノロジー ネットワーキング Windows Management Instrumentation (WMI) に関する簡単なガイド

Windows Management Instrumentation (WMI) に関する簡単なガイド

Windows ベースのオペレーティング システム上の管理情報とアクティビティのフレームワークは、Windows Management Instrumentation (WMI) と呼ばれます。

WMI は、SCOM (System Center Operations Manager) や Windows リモート管理など、オペレーティング システムや製品の他のコンポーネントにも管理データを提供します。

Windows Management Instrumentation (WMI) とは何ですか?

WMI は、パーソナル コンピュータ、サーバー、およびその他のネットワーク デバイス上のオペレーティング システムおよびその他の Microsoft アプリケーションとサービスを管理および監視するためのプラットフォームです。

WMI は、Microsoft が管理するコンピュータやその他のネットワーク デバイス上の情報やサービスへのプログラムによるアクセスを提供する、包括的でスケーラブルで使いやすいプログラミング インターフェイスを提供します。

これは、コンピューター上のオペレーティング システム、サービス、アプリケーション、およびレジストリとファイル システム データを検出および監視するために使用されます。また、コンピュータの管理を自動化するスクリプトやプログラムを作成および管理するためにも使用されます。

WQL (Windows Query Language) プログラミング言語を使用して、情報をクエリし、オペレーティング システム、コンピューター、デバイス上で操作を実行します。

また、Windows の最も強力で柔軟な管理ツールの 1 つである PowerShell へのアクセスも可能になり、自動化スクリプトの作成に使用できます。

さらに、WMI を使用すると、Windows システムとアプリケーションの管理と管理のための追加機能を提供するカスタム アプリケーションを構築できます。

マシンの状態を監視し、基本的なトラブルシューティングを実行し、パフォーマンス データを収集する必要があるユーザーにとって、WMI は便利です。

WMI の目的は何ですか?

WMI は、さらなる機能強化と拡張性を実現するためにデータを他の製品に配信することで、エンタープライズ ネットワーク コンポーネントの運用と管理を簡素化するため、Windows エンタープライズ ネットワークで役立ちます。

WMI の全体の目的は、Windows システムのあらゆる側面にわたって、次のような統合管理フレームワーク エクスペリエンスを提供することです。

  • オペレーティング システムのコンポーネント
  • プロセスとスレッド
  • サービス
  • デバイス
  • 運転手
  • アプリケーション
  • ユーザーアカウント
  • セキュリティ設定

WMI 発明の目的は、Windows システムに関連する運用および開発におけるコストと時間の削減につながります。 WMI を使用すると、システム イベントを監視し、パフォーマンス データを収集することもできます。このデータは、問題のトラブルシューティングや長期的な傾向の追跡に使用できます。

WMI は、管理作業を自動化し、オペレーティング システムを直接操作せずにデータにアクセスするために最も一般的に使用されます。そのため、時間のかかるプロセスを自動化する必要がある管理者やソフトウェア開発者にとって、WMI は優れた代替手段となります。

システムパフォーマンスの監視からアプリケーションデータの取得まで、あらゆることがこれで可能になります。これにより、開発者はよりスマートでインテリジェントなアプリケーションを作成できると同時に、IT 管理者が最小限の労力でタスクを完了できるようになります。

WMI は、システム情報にアクセスするためのリファレンス実装を提供し、Windows システムを管理および監視するための重要なツールです。これは Azure Machine Learning と AzureML の基礎であり、幅広いサードパーティ製品を強化するために使用されています。

WMIの使用

Windows Management Instrumentation (WMI) は、コーポレート ガバナンス情報にアクセスするための標準化テクノロジを開発する業界の取り組みである Web-Based Enterprise Management (WBEM) を Microsoft が提供するものです。

WMI は、Common Information Model (CIM) 業界標準を使用して、システム、アプリケーション、ネットワーク、デバイス、およびその他の管理対象コンポーネントを表します。 Distributed Management Task Force (DMTF) は、CIM を作成および維持します。

WMI 設計は多用途であり、幅広い管理業務をサポートするだけでなく、メーカーが新しいデバイス、アプリケーション、その他の進歩をサポートするための新しい WMI プロバイダーを作成できる柔軟で拡張可能なアーキテクチャを提供します。

その他の用途は次のとおりです。

  • Windows オペレーティング システムと Microsoft ネットワーク デバイスおよびサービスの包括的な管理。
  • リモート コンピュータを接続して WMI データにアクセスするために使用できます。
  • どのようなプログラムが実行されているか、どのようなサービスがセットアップされているかなど、システムに関する情報を検出します。
  • ハードウェア仕様に関する情報を取得し、システムのシャットダウンや再起動などのアクションを実行します。
  • アプリケーションの起動、サービスの開始、停止、構成、およびデータへのアクセス。
  • 管理アプリケーションの開発者は、この API を使用して、Visual Basic または Windows Scripting Host (WSH) でスクリプトを作成できます。

WMI アーキテクチャ

WMI (Windows Management Instrumentation) は、Windows 2000 で最初に発表された Microsoft テクノロジです。これにより、プログラマーは、WMI をサポートする任意のシステムで動作する管理プログラムを構築できます。

WMI のアーキテクチャと用語を見てみましょう。

WMI アーキテクチャの流れはオブジェクトから始まります。ハード ドライブ、ネットワーク カード、オペレーティング システム、サービスなどのコンポーネントは管理対象オブジェクトです (WMI 経由で管理できます)。 WMI インフラストラクチャは、プロバイダーを通じてオブジェクトからデータを受信します。 WMI からメッセージを送受信し、オブジェクトに渡します。

WMI プロバイダーは、DLL と、オブジェクトからのイベントとデータを監視する管理オブジェクト フォーマット (MOF) ファイルで構成されます。 WMI は、プロバイダーのインターフェイスによって提供される機能に従ってプロバイダーを分類します。

Windows には、Active Directory プロバイダー、ブート構成データ (BCD) WMI プロバイダー、分散ファイル システム (DFS) プロバイダー、イベント ログ プロバイダー、Hyper-V WMI プロバイダー、Win32 プロバイダー、レジストリ プロバイダーなど、多数の組み込み WMI プロバイダーがあり、およびSNMPプロバイダー。

WMI インフラストラクチャは、 WMI サービス (winmgmt) として知られる Microsoft Windows オペレーティング システムのコンポーネントです。 WMI コアと WMI リポジトリは、WMI インフラストラクチャの 2 つの部分です。

WMI リポジトリは、 WMI 名前空間によって編成された階層データ ストレージであり、Common Information Model (CIM) とも呼ばれます。 WMI サービスは、システムの起動時に、root のデフォルト、rootcimv2、root サブスクリプションなどの多数の名前空間を確立します。

さらに、このサービスは、Win32 および WMI システム クラスを含む、デフォルトのクラス定義セットを生成します。追加の WMI プロバイダーによって他の WMI 名前空間が作成される場合があり、各名前空間には複数の WMI オブジェクトが含まれます。

WMI サービスは、プロバイダー、管理アプリケーション、および WMI リポジトリの間の仲介者として機能します。プロバイダーによって定義されたクラスなど、オブジェクトに関する静的データのみがリポジトリに保存されます。 WMI は、クライアントが要求したときにプロバイダーからほとんどのデータを動的に取得します。

WMI コンシューマは、WMI インフラストラクチャと通信する管理アプリケーションまたはスクリプトです。 COM API for WMI または Scripting API for WMI を使用すると、管理プログラムはクエリ、データの項目化、プロバイダー メソッドの実行、およびイベントのサブスクライブを行うことができます。

WMI は、管理データをリモートおよびローカルで取得するための標準化されたインターフェイスを作成します。統一インターフェイスは、オペレーティング システムのアプリケーション プログラミング インターフェイス (API) から抽象化されます。これにより、アプリとスクリプトはオペレーティング システム API について知らなくても管理データを収集できるようになります。

WMI クエリを実行するにはどうすればよいですか?

WMI プラットフォームの多用途性の特徴は、クラス、インスタンス、またはスキーマ データに関する詳細を取得するためにリポジトリをクエリできることです。これらのメトリクスは、ローカルおよび遠隔のシステム、オペレーティング システム、ソフトウェア、およびその他の管理活動のインベントリに関連付けられています。

クエリの種類

WMI リポジトリから情報を取得するために使用されるクエリには、大きく分けて 2 種類あります。

同期クエリ:クエリ全体を通じてアプリケーションの動作の制御を維持するクエリです。インターフェイス呼び出しは 1 回だけで済むため、非同期呼び出しよりも簡単です。ただし、大規模な検索やネットワークベースの問い合わせの場合、アプリケーションがフリーズする可能性があります。

非同期クエリ:大量のデータ グループをクエリすることによってシステムまたはネットワークの速度が影響を受ける場合は、非同期クエリを使用することをお勧めします。

WQL (WMI クエリ言語)

WMI をクエリする一般的な方法の 1 つは、WMI クエリ言語です。

データベース環境では SQL (Structured Query Language) が使用され、WMI では WQL が使用されます。どちらも同様の構文構造を持っています。

SelectFrom 、およびWhere は、クエリの起動に使用される基本的な WQL ステートメントです。

一般的な WMI クエリは、「選択」コマンドを使用して WMI クラスからすべてのプロパティを選択することから始まります。アスタリスク (「*」) は、WMI クラスからすべてのプロパティを選択するために使用されます。プロパティ (1 つ以上のプロパティ、またはすべてのプロパティ) を選択した後、「From」キーワードを使用してクエリする WMI クラスを指定できます。正確な構文については、SQL チートシートを確認してください。

WQL は、Windows オペレーティング システムにデフォルトでインストールされる WMI テスター (wbemtest.exe) を通じて実行できます。 WMI クエリは、Windows PowerShell、VBScript、および C 言語を通じて実行することもできます。

WQL クエリの種類

WQL クエリは、3 つの異なる種類の情報を取得するために利用されます。

オブジェクト クエリ: Windows システム リソースに関する情報は、これらのクエリを使用して取得できます。

イベント クエリ:これらのクエリは、イベント ログへの変更、プロセスの開始、サービスのステータス、コンピュータの可用性、ディスクの空き容量などのエンティティや出来事を追跡するために使用されます。

スキーマ クエリ:これらのクエリは、WMI スキーマの構造に関する詳細を取得するために使用されます。

クエリの実行

オブジェクト クエリを実行する方法を見てみましょう。

次の方法では、ローカル システム上の WIN_32 プロセスを確認する方法を説明します。

WMI テスター ツールは、コマンド ラインから wbemtest.exe と入力して実行します。

次のウィンドウがポップアップ表示されます。

クエリするクラスを含む WMI 名前空間 (ほとんどの場合、 Root\Cimv2 ) に接続するには、[接続] タブをクリックします。

クエリを実行するには、以下に示すように [クエリ] タブをクリックします。

次に、情報を取得するクエリを入力します。たとえば、次のコマンドを実行して、ローカル システムで実行されているすべてのプロセスを取得してみましょう。

 select * From Win32_process 

「適用」タブをクリックすると、以下の結果が表示されます。

上記の GUI ベースの実行は、PowerShell を使用してコマンド プロンプトで実行することもできます。

PowerShell プラットフォームでは、すべての win_32 プロセスのリストを取得するために、以下のコードが使用されます。

 Get-WmiObject -Class Win32_Process

すべての PowerShell クエリ パラメーターを取得するには、 Microsoft PowerShell 管理ページにアクセスしてください。

このクエリを VBScript および C 言語で実行するには、 Microsoft のドキュメント ページで完全な洞察が得られます。

WMI リポジトリをクエリするもう 1 つの方法は、WMIC コマンドを使用することです。

  • コマンドプロンプトからCMDを実行する
  • 「WMIC」と入力して Enter を押し、プログラムを開始します
  • コマンド プロンプトがwmic:root\cli>に変わります。

管理者は、このプロンプトから WMI クエリを実行できます。

たとえば、ローカル システムの CPU 情報をロードするには、コマンドは次のようになります。

 wmic:root\cli> WMIC CPU

結果/情報がコマンド プロンプトに表示されます。

 AddressWidth  Architecture  AssetTag                Availability  Caption                                 Characteristics  ConfigManagerErrorCode  ConfigManagerUserConfig  CpuStatus  CreationClassName  CurrentClockSpeed  CurrentVoltage  DataWidth  Description                             DeviceID  ErrorCleared  ErrorDescription  ExtClock  Family  InstallDate  L2CacheSize  L2CacheSpeed  L3CacheSize  L3CacheSpeed  LastErrorCode  Level  LoadPercentage  Manufacturer  MaxClockSpeed  Name                                      NumberOfCores  NumberOfEnabledCore  NumberOfLogicalProcessors  OtherFamilyDescription  PartNumber              PNPDeviceID  PowerManagementCapabilities  PowerManagementSupported  ProcessorId       ProcessorType  Revision  Role  SecondLevelAddressTranslationExtensions  SerialNumber            SocketDesignation  Status  StatusInfo  Stepping  SystemCreationClassName  SystemName  ThreadCount  UniqueId  UpgradeMethod  Version  VirtualizationFirmwareEnabled  VMMonitorModeExtensions  VoltageCaps
64            9             To Be Filled By O.E.M.  3             Intel64 Family 6 Model 142 Stepping 10  252                                                               1          Win32_Processor    1801               7               64         Intel64 Family 6 Model 142 Stepping 10  CPU0                                      100       205                  1024                       6144         0                            6      31              GenuineIntel  1801           Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz  4              4                    8                                                  To Be Filled By O.E.M.                                            FALSE                     BFEBFBFF000806EA  3                        CPU   TRUE                                     To Be Filled By O.E.M.  U3E1               OK      3                     Win32_ComputerSystem     RENEE-HP     8                      51                      FALSE                          TRUE

WMIC エイリアスと動詞の詳細については、 Microsoft wmicを参照してください。

WMI に関するよくある質問

WMI で使用されるポートは何ですか?

使用されるポートは 49152 と 65535 です。WMI のベースとなる分散コンポーネント オブジェクト モデル (DCOM) は、デフォルトで 49152 ~ 65535 の範囲間の接続にランダムに選択された TCP ポートを使用します。

WMI は廃止されましたか?

WMI は引き続きサポートされます。 Windows 10 バージョン 21H1 および Windows Server の半期チャネル リリース 21H1 以降、WMI コマンド ライン (WMIC) プログラムはサポートされなくなりました。

WMI監視ツールとは何ですか?

WMI を監視するために利用できるツールは数多くあります。ただし、特に人気のあるものはいくつかあります。
SolarWinds WMI モニターとサーバーおよびアプリケーション モニター
PRTG を使用した Paessler WMI サービス センサー
ナギオス XI
Sapien WMI エクスプローラー
無料ツールは WMI Explorer、Adrem Free WMI Tools

WMI の問題をトラブルシューティングする方法

アプリケーションまたはスクリプトで WMI ローカル データまたはリモート データにアクセスしようとすると、クラスの欠落からアクセス違反まで、さまざまなエラーが発生することがあります。このようなエラーの解決策を得るには、Microsoft WMI トラブルシューティング ガイドを確認してください。

結論

一般に、Windows Management Instrumentation は、さまざまな Windows システム関連の機能を幅広く処理するために使用できる強力なツールです。 WMI は、最初は恐ろしく思えるかもしれませんが、Windows システムを扱う人にとっては非常に役立つツールです。

「 Windows Management Instrumentation (WMI) に関する簡単なガイド」についてわかりやすく解説!絶対に観るべきベスト2動画

WMI – Windows Management Instrumentation – [#12] IT プロフェッショナル向け PowerShell
Windows WMI: WMI repository, Providers, Infrastructure, and namespaces