Windows PowerShell から WMI Object にアクセスする方法

WMI (Windows Management Instrumentation) は、Windowsの情報を集中管理する目的で、Windows 2000から導入されました。コントロールパネルの「管理ツール」から「コンピュータの管理」を実行すると、WMIの表示、コントロールを行うツールが起動しますので、どのような情報を管理しているのか一目でわかります。

しかし、このツールはGUIインタフェースの為、ShellユーザーはWMIが提供する情報を得ることはできません。WMIが提供する情報は有用なものが多いためこの情報を使いたいと思っていても、ShellユーザーにとってWMIが提供する情報を利用するためにはC++またはVBScriptでプログラムを書くしかなく、とても面倒なのでWMIが提供する情報を使うことに躊躇された方もいらっしゃると思います。

そのようなときには、Windows PowerShellをお使いください。Windows PowerShellを使用すればWMIが提供する情報を簡単に取得できるようになります。Windows PowerShellにはWMIから情報を取得する方法としてGet-WmiObjectコマンドレットが用意されており、WMIクラスのインスタンスを取得することが簡単にできます。コマンドの書式は以下のとおりです。

Get-WmiObject <Class Name>

インストールされているクラスのリストを取得するには以下のように入力します。

Get-WmiObject -list

たくさんのクラスが表示されたことと思います。Microsoftが提供する標準クラスに関するドキュメントは以下の場所に用意されていますのでご覧になってみてください。

https://msdn2.microsoft.com/en-us/library/Aa394554.aspx

ここで幾つか役立ちそうな例をご紹介します。

BIOSの情報を取得する方法

Command: Get-WmiObject Win32_BIOS

Output:

私の環境では以下のように表示されました。

SMBIOSBIOSBersion : 6.00 PG

Manufacturer : Phoenix Technologies, LTD

Name : Phoenix - Award BIOS v6.00PG

SerialNumber :

Version : RS480 - 42302e31

CPUの情報を取得する方法

Command: Get-WmiObject Win32_Processor

Output:

私の環境では以下のように表示されました。

Caption : x64 Family 15 Model 47 Stepping 0

Manufacturer : AuthenticAMD

Name : AMD Athlon(tm) 64 Processor 3000+

以下省略…

物理メモリの情報を取得する方法

Command: Get-WmiObject Win32_PhysicalMemory

Output: 省略

ハードディスクの情報を取得する方法

Command: Get-WmiObject Win32_LogicalDisk

Output: 省略

ネットワークアダプタの情報を取得する方法

Command: Get-WmiObject Win32_NetworkAdapter

Output: 省略

上記の例で使ったクラスはすべてWin32 Classesカテゴリ中のComputer System Hardware Classesサブカテゴリに定義されているものです。

Win32 Classesカテゴリには以下の6つのサブカテゴリが存在します。

1. Win32 Classes

1.1 Computer System Hardware Classes

1.2. Operating System Classes

1.3. Installed Applications Classes

1.4. WMI Service Management Classes

1.5. Performance Counters Classes

1.6. Security Descriptor Helper Class

その他、WMIクラスの定義は以下の10のカテゴリに分類され、それぞれサブカテゴリが存在し多種多様なクラスが定義されています。

1. Win32 Classes

2. WMI Registry Classes

3. WMI System Classes

4. Monitor Display Classes

5. IPMI Classes

6. MSFT Classes

7. CMI Classes

8. Standard Consumer Classes

9. MSMCA Classes

10. WMI C++ Classes

このように、利用したい情報を得るためのクラス名を探してGet-WmiObjectのパラメータとして指定するだけで、いとも簡単にWMIの情報を得ることができます。

これはかなり便利なので皆さんも是非使ってみてください。