about_WMI

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0

トピック

about_WMI

概要

Windows Management Instrumentation (WMI) では、Common Information Model (CIM) を使用して、システム、アプリケーション、ネットワーク、デバイス、および現代の企業の管理可能なその他のコンポーネントを表します。

詳細説明

Windows Management Instrumentation (WMI) は、業界標準である Web-Based Enterprise Management (WBEM) を Microsoft が実装したものです。

従来の WMI では、DCOM を使用して、ネットワークに接続されたデバイスと通信し、リモート システムを管理します。Windows PowerShell® 3.0 では、CIM プロバイダー モデルが導入され、WinRM を使用して DCOM への依存が排除されています。この CIM プロバイダー モデルでは、新しい WMI プロバイダー API を使用して、開発者がネイティブ コード (C++) で Windows PowerShell コマンドレットを記述することもできます。

WMI プロバイダーを Windows PowerShell プロバイダーと混同しないでください。Windows の機能の多くは、それぞれの管理機能を公開する WMI プロバイダーと関連付けられています。WMI プロバイダーを取得するには、次のクエリのように、__Provider WMI クラスのインスタンスを取得する WMI クエリを実行します。

        Get-WmiObject -Class __Provider

WMI の 3 つのコンポーネント

WMI の次の 3 つのコンポーネントが Windows PowerShell と対話します。名前空間、プロバイダー、およびクラスです。

WMI 名前空間は、WMI プロバイダーと WMI クラスを関連するコンポーネントのグループに編成します。このように、.NET Framework 名前空間によく似ています。名前空間は、物理的な場所ではなく、論理データベースに近いものとなっています。すべての WMI 名前空間は、__Namespace システム クラスのインスタンスです。既定の WMI 名前空間は、Root/CIMV2 (Microsoft Windows 2000 以降) です。Windows PowerShell を使用して現在のセッションの WMI 名前空間を取得するには、次の形式でコマンドを使用します。

        Get-WmiObject -Class __Namespace

他の名前空間の WMI 名前空間を取得するには、Namespace パラメーターを使用して検索の場所を変更します。次のコマンドは、Root/Cimv2/Applications 名前空間に存在する WMI 名前空間を検索します。

        Get-WmiObject -Class __Namespace -Namespace 
        root/CIMv2/applications

WMI 名前空間は階層構造になっています。そのため、特定のシステム上のすべての名前空間の一覧を取得するには、ルート名前空間から始まる再帰クエリを実行する必要があります。

WMI プロバイダーは、Windows の管理可能なオブジェクトに関する情報を公開します。プロバイダーは、コンポーネントからデータを取得し、そのデータを WMI 経由で Windows PowerShell などの管理アプリケーションに渡します。ほとんどの WMI プロバイダーは動的なプロバイダーで、管理アプリケーションから要求されたときに動的にデータを取得します。

WMI クラスの検索

Windows 8 の既定のインストールでは、Root/Cimv2 に 1,100 以上の WMI クラスがあります。このように多数の WMI クラスがあるため、特定のタスクを実行するために使用する適切な WMI クラスを識別することが課題になります。Windows PowerShell 3.0 では、特定のトピックに関連する WMI クラスを 2 つの方法で検索できます。

たとえば、root\CIMV2 WMI 名前空間でディスクに関連する WMI クラスを検索するには、次に示すようなクエリを使用できます。

        Get-WmiObject -List *disk*

メモリに関連する WMI クラスを検索するには、次に示すようなクエリを使用できます。

        Get-WmiObject -List *memory*

CIM コマンドレットにも、WMI クラスを検出する機能があります。これを行うには、Get-CIMClass コマンドレットを使用します。次に示すコマンドは、ビデオに関連する WMI クラスを一覧表示します。

        Get-CimClass *video*

WMI 名前空間を変更するときにタブ拡張が機能するため、タブ拡張を使用すると、サブ WMI 名前空間の検索が容易になります。次の例では、Get-CimClass コマンドレットは電源設定に関連する WMI クラスを一覧表示します。それを検索するには、root/CIMV2/ WMI 名前空間を入力し、power 名前空間が表示されるまで何度か Tab キーを押します。次にコマンドを示します。

        Get-CimClass *power* -Namespace root/cimv2/power