| 原作者 | マイクロソフト |
|---|---|
| 開発者 | マイクロソフト |
| オペレーティング·システム | マイクロソフトウィンドウズ |
| プラットフォーム | IA-32、x86-64、ARM(歴史的にはItanium、DEC Alpha、MIPS、PowerPC) |
| タイプ | システム管理 |
| ライセンス | 独自 |
| Webサイト | learn.microsoft.com/en-us/previous-versions/windows/desktop/wmi_v2/windows-management-infrastructor |
Windows Management Instrumentation ( WMI ) は、 Windows ドライバー モデルの拡張機能のセットで構成され、インストルメント化されたコンポーネントが情報と通知を提供するためのオペレーティング システムインターフェイスを提供します。WMI は、 Distributed Management Task Force (DMTF) のWeb-Based Enterprise Management (WBEM) およびCommon Information Model (CIM) 標準のMicrosoftによる実装です。
WMI を使用すると、スクリプト言語( VBScriptや Windows のPowerShellなど)を使用して、 Microsoft Windows の パーソナル コンピューターとサーバーをローカルとリモートの両方で管理できます。WMI は、Windows 2000からWindows 11 のOSにプリインストールされています。Windows NTおよび[1] Windows 95からWindows 98ではダウンロードとして利用できます。[2]
マイクロソフトは、Windows Management Instrumentation Command-line ( WMIC )と呼ばれるWMIへのコマンドラインインターフェイスも提供しています。[3]ただし、WMICはWindows 10バージョン21H1、Windows 11、Windows Server 2022以降では非推奨となっています。[4]
WMIの目的
WMI の目的は、管理アプリケーション間で管理情報を共有できるようにする、環境に依存しない独自の仕様セットを定義することです。WMI は、デスクトップ管理インターフェイス(DMI) やSNMPなどの既存の管理標準と連携する Windows のエンタープライズ管理標準と関連テクノロジを規定します。WMI は、統一モデルを提供することで、これらの他の標準を補完します。このモデルは、任意のソースからの管理データに共通の方法でアクセスできる管理対象環境を表します。
開発プロセス
WMI は CIM とプロバイダーのコレクションを使用して管理可能なエンティティを抽象化するため、プロバイダーの開発には複数の手順が必要です。主な手順は次のようにまとめることができます。
- 管理可能なエンティティモデルを作成する
- モデルを定義する
- モデルを実装する
- WMIプロバイダーを作成する
- 実装するプロバイダーの種類を決定する
- プロバイダーのホスティングモデルを決定する
- ATLウィザードを使用してプロバイダーテンプレートを作成する
- プロバイダにコードロジックを実装する
- プロバイダーをWMIとシステムに登録する
- プロバイダーをテストする
- コンシューマーサンプルコードを作成します。
WMIプロバイダーの重要性
Windows NT 4.0 SP4 時代に最初の WMI 実装がリリースされて以来(帯域外ダウンロードとして)、Microsoft はWindows に一貫して WMI プロバイダーを追加してきました。
- Windows NT 4.0では、WMI がインストールされると、Microsoft ではおよそ 15 個の WMI プロバイダーが利用可能になりました。
- Windows 2000がリリースされたとき、オペレーティング システムのインストールの一部として 29 個の WMI プロバイダーがありました。
- Windows Server 2003のリリースに伴い、Microsoft は 80 を超える WMI プロバイダーをプラットフォームに組み込みました。
- Windows Vistaには13の新しいWMIプロバイダーが含まれており[5] 、その数は合計で約100になります。
- Windows Server 2008 には、IIS 7、PowerShell、仮想化のプロバイダーを含む、さらに多くのプロバイダーが含まれています。
- Windows 10にはモバイルデバイス管理(MDM)サービスのプロバイダーが47社含まれています。[6]
多くの顧客は、プロバイダー数の増加は、Microsoft がこの取り組みを明示的に表明していなくても、WMI が Microsoft で Windows の「ユビキタス」管理レイヤーになったことの兆候であると解釈しています。
Windows の WMI を介した管理データの公開が継続的に増加しているため、IT システム管理分野の人々は WMI に基づくスクリプトと自動化手順の開発を開始しました。[出典が必要]スクリプトのニーズを超えて、MOM、SCCM、 ADS、HP OpenView for Windows (HPOV)、BMC Software、CA, Inc.などの主要な管理ソフトウェア パッケージのほとんどは WMI 対応であり、さまざまなユーザー インターフェイスを介して WMI 情報を使用および提供できます。 これにより、 WMI 上でスクリプトを作成またはプログラミングできない管理者やオペレーターは、 WMI について学習することなく WMI の利点を享受できます。 ただし、 WMI はスクリプト可能であるため、必要に応じて、スクリプトまたは WMI 対応のエンタープライズ管理ソフトウェアから WMI 情報を使用する機会が与えられます。
特徴
1 つまたは複数の WMI プロバイダーを開発したい人にとって、WMI はすぐに使用できる多くの機能を提供します。最も重要な利点は次のとおりです。
- 自動化インターフェイス:
WMI にはすぐに使用できる自動化インターフェイスのセットが付属しているため、WMI プロバイダーとそのクラスのセットによってサポートされるすべての管理機能には、すぐに使用できるスクリプト サポートが無料で提供されます。WMI クラスの設計とプロバイダーの開発以外に、Microsoft の開発チームとテスト チームは、スクリプト モデルが WMI から既に利用できるため、スクリプト モデルを作成、検証、またはテストする必要はありません。 - .NET管理インターフェイス:名前空間[7] は既存のCOM / DCOM配管に依存している
ため、作成された WMI プロバイダーとその WMI クラスのセットは、使用される言語 ( C#、 VB.NETなど) に関係なく、すべての .NET アプリケーションで自動的に使用できるようになります。スクリプトの場合と同様に、WMI クラスの設計とプロバイダーの開発以外に、Microsoft の開発チームとテスト チームは、.NET Framework の新しい名前空間をサポートするために新しいアセンブリを作成、検証、テストする必要はありません。このサポートは、WMI から無料で既に提供されているためです。System.Management - C/C++ COM/DCOM プログラミング インターフェイス:
Windows のほとんどのコンポーネントと同様に、COM / DCOMプログラマーは、COM/DCOM インターフェイス レベルで開発したプロバイダーの機能を活用できます。以前の環境 (スクリプトおよび.NET Framework ) と同様に、COM/DCOM コンシューマーは、WMI COM インターフェイスの標準セットと対話するだけで、WMI プロバイダーの機能と、サポートされている WMI クラスのセットを活用できます。ネイティブ API からすべての管理情報を利用できるようにするには、WMI プロバイダー開発者は、定義済みの WMI COM インターフェイスのセットと対話するだけで済みます。これにより、管理情報は自動的に WMI COM レベルで利用できるようになります。さらに、スクリプト COM インターフェイス オブジェクト モデルは COM/DCOM インターフェイス オブジェクト モデルと非常によく似ているため、開発者はスクリプトの操作に慣れやすくなります。 - DCOM およびSOAP を介したリモート処理機能:管理はリモート処理
が中心であるため、WMI は単にローカル COM 機能を提供するだけでなく、DCOM トランスポートも提供します。さらに、SOAP トランスポートは、 Microsoft、Intel、Sun Microsystems、およびDellが主導するWS-Managementイニシアチブを通じてWindows Server 2003 R2で利用できるようになります。このイニシアチブにより、任意のスクリプトをリモートで実行したり、SOAP 要求/応答を処理する特定のインターフェイス セットを介して WMI データを使用したりすることができます。WMI プロバイダー開発者にとっての利点は、すべての機能を WMI 経由で公開すると、Windows Remote Management /WS-Management がその情報も使用できることです (WMI インスタンスの埋め込みオブジェクトは、Windows Server 2003 R2 ではサポートされていません。ただし、Vista ではターゲットになっています)。WS-Management への階層化と CIM データ モデルの SOAP へのマッピングはすべて、WMI/WS-Management ソリューションから無料で提供されます。DCOM を使用する必要がある場合、DCOM を実装するには、各クライアント マシンにプロキシDLLを展開する必要があります。 WMI は Windows 2000 以降の Windows オペレーティング システムで使用できるため、これらの問題は解消されます。 - クエリのサポート: WMIはWQL [8]
クエリのサポートを標準で提供します。つまり、プロバイダーがクエリをサポートするように設計されていない場合、WMIはプロバイダーの列挙技術を使用してそれをサポートします。 - イベント機能:
WMI は、関心のあるイベントをサブスクライバーに通知する機能を提供します。WMI は WMI クエリ言語 (WQL) を使用して WQL イベント クエリを送信し、返されるイベントの種類を定義します。イベント メカニズムは、関連するすべてのコールバックとともに、WMI COM/DCOM およびオートメーション インターフェイスの一部です。WMI プロバイダーを作成する人は誰でも、この機能のメリットを顧客に無料で提供できます。WMI プロバイダーと関連する WMI クラス セットによって公開される管理情報をどのように使用するかは、消費者が決定します。 - コード テンプレート ジェネレーター:
すべての COM/DCOM インターフェイスと関連定義を含む WMI プロバイダーの作成プロセスを高速化するために、WMI チームはプロバイダーを実装するコード テンプレートを生成するWMI ATL ウィザードを開発しました。生成されたコードは、開発者が最初に設計した WMI クラス モデルに基づいています。WMI プロバイダー開発者は、公開する管理情報を取得するネイティブ API セットを使用して、WMI プロバイダーの定義済み COM/DCOM インターフェイスをインターフェイスできます。この作業は、プロバイダー コードの「ギャップ」を埋めて、必要なインターフェイス ロジックを作成することです。 - 予測可能性:
予測可能性は、IT プロフェッショナルにとって重要な問題です。なぜなら、予測可能性とは、Windows コンポーネントを管理する一連のインターフェイスの経験を持つ人が、すべてを一から学び直すことなく、その知識を他の管理可能な Windows コンポーネントにすぐに直感的に適用できる能力を定義するからです。顧客にとって予測可能性は、投資収益率 ( ROI ) を高めるため、大きなメリットとなります。このような状況に直面している人は、以前の経験に基づいて、物事が同じように機能すると単純に期待します。COM プログラミング/スクリプト可能インターフェイスが絶えず増加していることは、予測可能性に大きな影響を与えます。これにより、顧客が Windows を自動化、管理し、既存の知識を活用することが困難になります。WMI と CIM は、管理可能なエンティティが何であれ、常に同じプログラミング オブジェクト モデル (COM/DCOM、オートメーション、.NET) を公開することで、この問題に対処します。 - 既存の顧客投資の保護:
顧客とパートナーの投資を保護することは、顧客がテクノロジに投資する動機になります。Microsoft が過去数年間に WMI プロバイダーの作成に多大な投資をしたように、顧客とパートナーは Windows の WMI 機能を活用するツールに投資しました。したがって、Windows の管理可能なコンポーネントごとに新しい特定のインターフェイス セットを使用する必要はなく、当然ながらこれらの機能を活用し続けます。特定のインターフェイス セットとは、コンポーネントまたはテクノロジ専用の新しいモデルまたはインターフェイス セットに基づく特定のエージェント セットまたは社内開発ソフトウェアがあることを意味します。今日 WMI の機能を活用することで、顧客とパートナーは、過去に行われた作業投資を活用しながら、開発、学習曲線、および新しい発見にかかるコストを最小限に抑えることができます。これは、改善されたテクノロジで既存の実装を活用し続けるため、インフラストラクチャの安定性と信頼性にも大きな影響を及ぼします。 - 論理的かつ統一された管理モデルを提供する:
冒頭で簡単に説明したように、このモデルは DMTF (https://www.dmtf.org/) によって定義された CIM と呼ばれる業界標準に基づいています。CIMクラスベースのスキーマは、業界の要件を満たすコンストラクターとソフトウェア開発者のコンソーシアムによって定義されます。これは、Microsoft が WMI 機能を活用するだけでなく、他のサードパーティのコンストラクターや開発者もモデルに適合する独自のコードを作成することを意味します。たとえば、Intel は、一部のネットワーク ドライバー アダプターとソフトウェアでこれを行っています。HP は既存の WMI プロバイダーを活用し、HP Open View Enterprise Managementソフトウェアに独自の WMI プロバイダーを実装しています。IBM はTivoli管理スイートから WMI を使用し、MOMとSMSも WMI 情報を消費および提供しています。最後に、Windows XP SP2 はWMI を利用して、ウイルス対策ソフトウェアとファイアウォールから情報ステータスを取得します。
WMIツール
一部の WMI ツールは、設計および開発フェーズでも役立ちます。これらのツールは次のとおりです。
- MOF コンパイラ (MOFComp.exe):管理オブジェクト フォーマット (MOF) コンパイラは、管理オブジェクト フォーマット ステートメントを含むファイルを解析し、ファイルで定義されているクラスとクラス インスタンスを CIM リポジトリに追加します。MOF フォーマットは、ASCIIファイルで CIM クラス表現を定義するための特定の構文です (たとえば、MIBはSNMPに対して、MOF ファイルは CIM に対して)。は、
MOFComp.exeすべての WMI インストールに含まれています。CIM リポジトリに存在するすべての定義は、最初は MOF ファイルで定義されます。MOF ファイルは にあります%SystemRoot%\System32\WBEM。WMI セットアップ中に、CIM リポジトリにロードされます。 - WMI 管理ツール: WMI 管理ツールは、WMI CIM Studio、WMI オブジェクト ブラウザー、WMI イベント登録、WMI イベント ビューアーの 4 つのツールで構成されています。WMI プロバイダー開発者にとって最も重要なツールは、CIM リポジトリでの最初の WMI クラス作成に役立つ WMI CIM Studio です。このツールは、Web インターフェイスを使用して情報を表示し、初めて実行するときにシステムにインストールされたActiveXコンポーネントのコレクションに依存します。WMI CIM Studio には、次の機能があります。
- 選択したシステムに接続し、利用可能な任意の名前空間内の CIM リポジトリを参照します。
- クラスを名前、説明、またはプロパティ名で検索します。
- 特定のクラスに関連するプロパティ、メソッド、および関連付けを確認します。
- 検査対象システムの特定のクラスで利用可能なインスタンスを確認します。
- WQL 言語でクエリを実行します。
- 選択したクラスに基づいて MOF ファイルを生成します。
- MOF ファイルをコンパイルして CIM リポジトリにロードします。
- WinMgmt.exe: ツールではなく、 WMI コア サービスを実装する実行可能
WinMgmt.exeファイルです。Windows NTファミリのオペレーティング システムでは、WMI はサービスとして実行されます。Windows 98、Windows 95、または Windows Me を実行しているコンピューターでは、WMI はアプリケーションとして実行されます。Windows NT ファミリのオペレーティング システムでは、この実行可能ファイルをアプリケーションとして実行することもできます。その場合、実行可能ファイルは現在のユーザー コンテキストで実行されます。このためには、まず WMIサービスを停止する必要があります。実行可能ファイルは、 WMI をサービスまたはアプリケーションとして起動するときに役立つスイッチをいくつかサポートしています。プロバイダーをデバッグしたい WMI プロバイダー開発者は、基本的に WMI サービスをアプリケーションとして実行する必要があります。[9] - WBEMTest.exe:
WBEMTest.exeWMI に付属する WMI テスター ツールです。このツールを使用すると、管理者または開発者は、WMI がAPIレベルで提供するグラフィカル インターフェイスからほとんどのタスクを実行できます。このツールはすべての Windows NT ベースのオペレーティング システムで使用できますが、Microsoft では正式にサポートされていません。WBEMTest には次の機能があります。- クラスを列挙、開く、作成、削除します。
- クラスのインスタンスを列挙、開く、作成、削除します。
- 名前空間を選択します。
- データおよびイベントのクエリを実行します。
- クラスまたはインスタンスに関連付けられたメソッドを実行します。
- すべての WMI 操作を非同期、同期、または半非同期で実行します。
| 開発者 | マイクロソフト |
|---|---|
| オペレーティング·システム | マイクロソフトウィンドウズ |
| タイプ | 指示 |
| ライセンス | 独自の 商用ソフトウェア |
| Webサイト | docs.microsoft.com/en-us/windows-server/administration/windows-commands/wmic |
- WMI コマンド ライン ツール (WMIC): WMIC は、いくつかの簡単なキーワード (エイリアス) を使用して、システムに関する WMI 情報を簡単に取得できるように設計されたコマンド ライン ツールです。WMIC.exe は、Windows XP 以降のすべての Windows バージョンで使用できます。
wmic /?コマンド ラインで入力すると、スイッチとキーワードの完全なリストが表示されます。Windows 11 21H2 では、wmic /?「WMIC は非推奨です。」と表示され、その後にヘルプ テキストが表示されます (WMIC は引き続き完全に機能します)。Windows 11 24H2 では、WMIC は既定ではインストールされず、Windows 設定からインストールできるオプション機能として使用できます。- Samba4をベースにしたPythonで書かれたWMIコマンドラインツールのLinux版[10]がある。
wmi-client
- Samba4をベースにしたPythonで書かれたWMIコマンドラインツールのLinux版[10]がある。
- WBEMDump.exe: WBEMDump は、 Platform SDKで配布されるツールです。このコマンド ライン ツールには、独自のVisual C++プロジェクトが付属しています。このツールは、CIM リポジトリ クラス、インスタンス、またはその両方を表示できます。WMIC で取得されるのと同じ情報を取得できます。WMI
WBEMDump.exeを WMIC として抽象化しないため、WMI に関するより具体的な知識が必要です。ただし、Windows NT 4.0 および Windows 2000 で実行できます。クラスまたはインスタンスによって公開されるメソッドを実行することもできます。システム インストールで配布される標準の WMI ツールではない場合でも、このツールは CIM リポジトリと WMI 機能を調べるのに非常に役立ちます。 - WMIDiag.vbs: WMI 診断ツールは、 Microsoft からダウンロードできるVBScriptで、Windows 2000 以降で WMI をテストおよび検証するためのツールです。ダウンロードには非常に詳細なドキュメントが含まれており、ツールは多数のスイッチをサポートしています。実行すると、実行した手順 (ログ ファイル)、結果の概要 (レポート ファイル)、統計ファイル (コンマ区切り値形式)、およびオプションでマシンに登録されているプロバイダーの一覧ファイル (プロバイダー、これもコンマ区切り値形式) の 4 つのテキスト ファイルが生成されます。生成されるレポート ファイルには、特定された問題の一覧と、それらの修正方法が含まれています。
- WMI エクスプローラー: WMI エクスプローラー ツールは、ここからダウンロードできる無料で利用できるオープンソース プログラムであり、グラフィカル ユーザー インターフェイスで WMI プロバイダーを列挙および照会するためのツールです。
ワイヤレスネットワークの例
.NET Frameworkでは、ManagementClass クラスは Common Information Model (CIM) 管理クラスを表します。WMI クラスは、Win32_LogicalDiskディスク ドライブの場合は 、またはWin32_Processなどの実行中のプログラムの場合は になりますNotepad.exe。
この例では、C# 言語で
MSNdis_80211_ServiceSetIdentifierWMI クラスを使用して、システムが現在接続しているWi-FiネットワークのSSIDを見つける方法を示します。
ManagementClass mc = new ManagementClass ( "root\\WMI" 、"MSNdis_80211_ServiceSetIdentifier" 、null ); ManagementObjectCollection moc = mc . GetInstances ();
foreach ( ManagementObject mo in moc ) { string wlanCard = ( string ) mo [ "InstanceName" ]; bool active ; if ( ! bool . TryParse ( ( string ) mo [ "Active" ], out active )) { active = false ; } byte [] ssid = ( byte []) mo [ "Ndis80211SsId" ]; }
WMIMSNdis_80211_ServiceSetIdentifierクラスは、Windows XP および Windows Server 2003 でのみサポートされます。
WMI ドライバー拡張
WDMの WMI 拡張機能は、情報の公開、デバイス設定の構成、デバイス ドライバーからのイベント通知の提供、管理者がWDM プロバイダーと呼ばれる WMI プロバイダーを介してデータ セキュリティを設定できるようにするなどのカーネル レベルのインストルメンテーションを提供します。拡張機能は WDM アーキテクチャの一部ですが、幅広い用途があり、他の種類のドライバー ( SCSIやNDISなど) でも使用できます。
WMI ドライバー拡張機能サービスは、WMI またはイベント トレース情報を公開するように構成されているすべてのドライバーとイベント トレース プロバイダーを監視します。インストルメントされたハードウェア データは、WDM の WMI 拡張機能用にインストルメントされたドライバーによって提供されます。WDM の WMI 拡張機能は、Windows ネイティブのドライバー モデル内でデータをインストルメントするための Windows デバイス ドライバー インターフェイスのセットを提供するため、OEMおよびIHV はインストルメントされたデータ セットを簡単に拡張し、ハードウェア/ソフトウェア ソリューションに価値を追加できます。ただし、WMI ドライバー拡張機能は、Windows Vista以降のオペレーティング システムではサポートされていません。[11]
参照
参考文献
- ^ 「WMI Redistributable for Windows NT」。microsoft.com。2010年2月24日時点のオリジナルよりアーカイブ。2018年5月4日閲覧。
- ^ 「WMI Redistributable for Windows 95 and Windows 98」。microsoft.com。2007年4月23日時点のオリジナルよりアーカイブ。2018年5月4日閲覧。
- ^ 「Windows Management Instrumentation (WMI) コマンドライン ユーティリティ (Wmic.exe) の説明」。2007 年 5 月 2 日のオリジナルからアーカイブ。
- ^ 「WMIC: WMI コマンドライン ユーティリティ」。Microsoft。2023 年 3 月 8 日。2023 年 10 月 14 日時点のオリジナルよりアーカイブ。
- ^ 「Windows Vista クライアントの管理性」。microsoft.com。2016年 3 月 3 日時点のオリジナルよりアーカイブ。2018 年5 月 4 日閲覧。
- ^ 「Windows 10 でサポートされる WMI プロバイダー」。Microsoft。2017年6 月 25 日。2018 年 9 月 30 日時点のオリジナルよりアーカイブ。2018 年9 月 30 日閲覧。
- ^ 「System.Management 名前空間」。msdn2.microsoft.com。2008年4 月 16 日時点のオリジナルよりアーカイブ。2018 年5 月 4 日閲覧。
- ^ 「WMI クエリ言語 (WQL) via PowerShell」。ravichaganti.com。2011年5月1日。2017年10月12日時点のオリジナルよりアーカイブ。2018年5月4日閲覧。
- ^ 「WMI タスク: コンピューター ソフトウェア (Windows)」。msdn2.microsoft.com。2008年 4 月 6 日時点のオリジナルよりアーカイブ。2018 年5 月 4 日閲覧。
- ^ D'Vine, Rhonda. 「Ubuntu – エラー」. packages.ubuntu.com . 2017年5月2日時点のオリジナルよりアーカイブ。 2018年5月4日閲覧。
- ^ 「Windows Vista および Windows "Longhorn" Server 開発者ストーリー: アプリケーション互換性クックブック」。msdn2.microsoft.com。2008年 4 月 21 日時点のオリジナルよりアーカイブ。2018年5 月 4 日閲覧。
外部リンク
- Microsoft Developer Network の WMI
- CIM用語
- WMI の概要と背景
- WMI と CIM の概要
- WMI のサポートが改善され、PowerShell が WMI の使用とスクリプト作成に最適な環境になった理由
- Microsoft WMI ウェブキャスト
- WMI コード クリエーター
