WMI の使用

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

注意

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

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

WMI からのデータの取得

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

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

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

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

アプリケーションの言語 トピック
Microsoft ActiveX スクリプト ホスティング (Visual Basic Scripting Edition (VBScript) や Perl など) で記述されたスクリプト
WMI 用スクリプト API
WMI スクリプトの作成」から始めます。
スクリプト コードの例については、「スクリプトおよびアプリケーション用の WMI タスク」と TechNet ScriptCenter スクリプト リポジトリをご覧ください。
Windows PowerShell
Windows PowerShell ファースト ステップ ガイド
WMI PowerShell コマンドレット (Get-WmiObject など)。
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 セキュリティの維持」で説明しています。 次の表は、スクリプト言語とアプリケーション言語を使用してセキュリティ設定を構成する方法を説明するトピックを示しています。

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

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

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

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

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

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

  6. システムのパフォーマンス カウンター データは、WMI を介して提供されます。

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

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

WMI へのデータの提供

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

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

  • 記述するプロバイダーの種類を決定します。

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

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

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

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

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

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

      この方法では、マネージド コード プロバイダーが作成されます。 マネージ コード プロバイダーをあらゆる .NET Framework 言語で記述でき、WMI COM プロバイダーより記述が簡単で、Win32 クラスのような WMI CIM ベースのクラスからデータを取得できます。 ただし、.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 に、C++ の場合は WMI 用 COM API を使用し、Visual Basic の場合は Wbemdisp.tlb タイプ ライブラリWMI 用スクリプト API を使用します。
リモート コンピューター上の WMI への接続
スクリプト、アプリケーション、プロバイダーからリモート コンピューター上の WMI への接続を確立し、データを取得したり、ハードウェアとソフトウェアを制御したりする方法について説明します。
Windows PowerShell を使用してリモート コンピューター上の WMI に接続する
Windows PowerShell を使用してリモート コンピューター上の WMI への接続を確立し、データを取得したり、ハードウェアやソフトウェアを制御したりする方法について説明します。
イベントの監視
一時的または永続的な WMI イベント コンシューマーを作成してイベント通知を取得する方法について説明します。
WMI へのデータの提供
WMI は動的管理データをクライアントのスクリプトやアプリケーションに提供するために、それをプロバイダーから取得します。
64 ビット コンピューターでのデータの取得と提供
既定以外のプロバイダーにアクセスする方法と、64 ビット システムのプロバイダー ライターに関する考慮事項について説明します。