WMI の使用

クライアント アプリケーションとスクリプトから WMI を使用できます。 WMI を使用することで、管理タスクの検出と実行の両方を容易にするインフラストラクチャがもたらされます。 さらに、独自の WMI プロバイダーを作成することで、可能な一連の管理タスクを追加していくことができます。

Note

アプリケーションとスクリプトを記述するための WMI の次世代バージョンは、Windows Management Infrastructure (WMI) を通じて提供されています。 詳細については、「MI プロバイダーとクライアント」を参照してください。

このセクションでは、次のトピックについて説明します。

WMI からのデータの取得

次の手順では、スクリプトまたはアプリケーションを記述して WMI からデータを取得する方法について説明します。

スクリプトまたはアプリケーションを記述して WMI からデータを取得する方法

  1. 使用する言語を決定します。 スクリプトの詳細については、「WMIスクリプトの作成」を参照してください。 C++ の詳細については、「C++ を使用した WMI アプリケーションの作成」を参照してください。 C# または WMI .NET の使用に関する詳細については、「WMI .NET の概要」をご覧ください。

    WMI データは、さまざまな言語で表示または操作できます。 次の表に、スクリプト言語とアプリケーション言語を使用してデータを取得する方法を説明するトピックを示しています。

アプリケーションの言語 トピック
Visual Basic Scripting Edition (VBScript) や Perl など、Microsoft ActiveX スクリプト ホスティングで記述されたスクリプト
WMI 用スクリプト API
WMI スクリプトの作成」から始めます。
スクリプト コードのサンプルについては、「スクリプトとアプリケーションの WMI タスク」および TechNet ScriptCenter のスクリプト リポジトリを参照してください。
Windows PowerShell
Windows PowerShell ファースト ステップ ガイド
Get-WmiObject などの WMI PowerShell コマンドレット。
Visual Basic アプリケーション
WMI 用スクリプト API
Active Server Pages
WMI 用スクリプト API
WMI 用 Active Server ページの作成」から始めます。
C++ アプリケーション
WMI 用 COM API
C++ を使用した WMI アプリケーションの作成」と「WMI C++ アプリケーションの例」 (例を含む) から始めます。
C#、Visual Basic .NET、または J# で記述された .NET Framework アプリケーション
Microsoft.Management.Infrastructure 名前空間内のクラス。
注: System.Management は、WMI のマネージド コードを対象とした最初の名前空間でした。 しかし、System.Management の基盤となるテクノロジは、通常、Microsoft.Management.Infrastructure よりも遅く、スケール能力も低下します。 そのため、新しいプロジェクトに System.Management を使用することはお勧めしません。 (System.Management の詳細については、「WMI .NET の概要」を参照してください。)
  1. リモート コンピューターへの接続が機能することを確認します。

    詳細については、「リモート コンピューター上の WMI への接続」を参照してください。

  2. リモート コンピューターで WMI に接続するには、「 WMI セキュリティの維持」で説明されているように、適切なセキュリティ設定が必要です。 次の表では、スクリプト言語とアプリケーション言語を使用してセキュリティ設定を構成する方法を説明するトピックを示しています。

    Language トピック
    任意の言語、Visual Basic アプリケーションでのスクリプト
    VBScript を使用した既定のプロセス セキュリティ レベルの設定
    Active Server Pages
    WMI ASP スクリプト用の IIS 5 以降の構成
    C++
    C++ を使用した既定のプロセス セキュリティ レベルの設定 IWbemServices およびその他のプロキシのセキュリティの設定
  3. WMI に接続した後は、クエリとリストを使用してデータを取得できます。

    詳細については、「クラスとインスタンスの情報の操作」および「WQL を使用したクエリ」を参照してください。

  4. レジストリ データは WMI を介して利用でき、新しいキーと値を作成したり、既存のキーや値を変更したりできます。

    詳細については、「システム レジストリの変更」を参照してください。

  5. システムの再起動間に一時的に、または永続的に、WMI を介してイベント通知をサブスクライブすることができます。

    詳細については、「イベントの監視」と「WMI イベントの受信」を参照してください。

  6. システムのパフォーマンス カウンター データは、WMI を介して取得できます。

    システム パフォーマンス ライブラリ カウンターは、WMI クラスに変換されます。 詳細については、「パフォーマンス データの監視」を参照してください。

  7. スクリプトとアプリケーションの WMI タスク」では、WMI を使用して多数の管理タスクを実行する方法について説明しています。

WMI へのデータの提供

次の手順では、プロバイダーを記述して WMI にデータを提供する方法について説明します。

プロバイダーを記述して WMI にデータを提供する方法

  • 書き込むプロバイダーの種類を決定します。

    VBScript で WMI プロバイダーを記述することはできません。 ただし、他のいくつかの方法を使用して、WMI COM プロバイダーを作成することができます。

    • Visual Studio で WMI ATL ウィザードを使用する。

      この方法では、アンマネージ COM プロバイダーが作成されます。 詳細については、「WMI インスタンス プロバイダーの追加」および「WMI イベント プロバイダーの追加」を参照してください。

    • 統合開発環境で COM を直接使用する。

      この方法では、アンマネージ COM プロバイダーが作成されます。

    • .NET Framework で WMI を使用してマネージド コード プロバイダーを作成する。

      この方法では、マネージド コード プロバイダーが作成されます。 マネージド コード プロバイダーは、任意の .NET Framework 言語で記述でき、WMI COM プロバイダーよりも記述が簡単で、WMI CIM ベースのクラス (Win32 クラスなど) からデータを取得することができます。 ただし、.NET Framework WMI プロバイダーにはいくつかの制限があります。 詳細については、「WMI を使用したアプリケーションの管理」を参照してください。

    • プロバイダー フレームワーク クラスを使用することはお勧めしません。

      プロバイダー フレームワークは、WMI ATL ウィザードに置き換わり、COM を直接使用するか .NET Framework プロバイダーを使用します。 プロバイダー フレームワーク クラスを使用して WMI COM プロバイダーを作成することは、現在、推奨されていません。 次の表に、COM または .NET Framework プロバイダーの使用方法について説明するトピックを示しています。

    プロバイダー トピック
    WMI と同じプロセスの COM プロバイダー
    WMI へのデータの提供
    COM 分離プロバイダー
    アプリケーションへのプロバイダーの組み込み
    C# または Visual Basic.NET の .NET Framework プロバイダー
    WMI を使用したアプリケーションの管理

WMI の重要なタスク

次のトピックは、WMI を使用してエンタープライズ コンポーネントを監視および制御する方法についての説明。

トピック 説明
スクリプトとアプリケーションの WMI タスク
リモート コンピューターの新しいプリンター接続の追加やコンピューターにインストールされているすべての修正プログラムの検索など、コンピューターとネットワークの一般的な管理タスクを実行するスクリプトや、アプリケーションで使用する適切な WMI クラスと手順を見つける方法についての説明。
WMI アプリケーションまたはスクリプトの作成
ActiveX オブジェクトで動作する VBScript や Perl などのスクリプト言語を使用して、WMI データにアクセスできます。 アプリケーションは、WMI 用の COM API または Visual Basic で、Wbemdisp.tlbtタイプ ライブラリ および WMI 用スクリプト API を使用して、C++ で WMI にアクセスできます。
リモート コンピューター上の WMI への接続
スクリプト、アプリケーション、およびプロバイダーがリモート コンピューター上の WMI への接続を確立して、データを取得したり、ハードウェアとソフトウェアを制御したりする方法についての説明。
Windows PowerShell を使用したリモート コンピューター上の WMI への接続
Windows PowerShell を使用してリモート コンピューター上の WMI への接続を確立し、データを取得したりハードウェアとソフトウェアを制御したりする方法についての説明。
イベントの監視
一時的または永続的な WMI イベント コンシューマーを作成して、イベント通知を取得する方法についての説明。
WMI へのデータの提供
WMI は動的管理データを、プロバイダーから取得することによって、クライアントのスクリプトやアプリケーションに提供します。
64 ビット コンピューターでのデータの取得と提供
既定以外のプロバイダーにアクセスする方法と、64 ビット システムのプロバイダーの作成者に関する考慮事項についての説明。