Skip to content
nishi_74322014 edited this page Aug 3, 2026 · 1 revision

WMI

概要

WMI(Windows Management Instrumentation)は、Windowsを管理するためのAPIです。

  • Win32_ComputerSystem
  • Win32_OperatingSystem
  • Win32_NetworkAdapter

のような型があり、その型に応じたオブジェクトを通して、
Windows の設定や状態の情報を取得したり、変更したりできます。

vbsの例

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
for each nic in objWMIService.ExecQuery("select * from Win32_NetworkAdapter")
  wscript.echo nic.NetConnectionID
next

例では、まず、WMIサーバーのオブジェクトを得ます。
winmgmts: が WMI を指し、\\.\ が現在のWindows PC、root\cimv2 が得るオブジェクトの名前空間です。
\\.\cimv2 に別の物を指定すると、他の Windows や、別の名前空間から、オブジェクトを得ることもできます。

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

例では、続いて、WMI から NICの情報を得ます。
select * from 型 をクエリすることで、型に該当する全てのオブジェクトを得ます。

for .... ExecQuery("select * from Win32_NetworkAdapter")

※ ここで使われているクエリ言語は WQL(WMI Query Language)。SQL に似ているが別物。

PowerShell の例

# 非推奨(PowerShell 6 以降で削除)
Get-WmiObject -Class Win32_NetworkAdapter

# 現在の書き方(CIM コマンドレット)
Get-CimInstance -ClassName Win32_NetworkAdapter | Select-Object Name, NetConnectionID

補足(最新化): 元 Wiki は VBScript(WSH)前提の記述。現在は、

  • VBScript 自体が非推奨(Windows 11 24H2 以降はオンデマンド機能化、将来削除予定)。
  • Get-WmiObject 系(WMI コマンドレット)は PowerShell 6 で削除。 後継は CIM コマンドレットGet-CimInstance / Invoke-CimMethod / Get-CimClass)で、 DCOM ではなく WinRM(WS-Man)を使うためリモート/ファイアウォールとの相性が良い。
  • .NET から使う場合は System.Management(Windows 専用パッケージ)。

WMIの探し方

上に書いた WMI の型は、ほんの一例にすぎません。
簡単な方法は、WMI をキーワードに含めて、時には英単語で、検索することです。

例えば、Windows にインストールされているプログラムの一覧を得るWMIを探すとき、

site:microsoft.com script wmi product list

で、ググると、Win32_Product class が上位でヒットします。
WMI の型の多くは Win32_ で始まります
(そうでないものもありますが、Windows OS の情報は Win32_ で始まります)。

注意: Win32_Product は列挙するだけでインストール済み MSI パッケージの整合性検証が走り、 非常に遅く、イベントログを大量に出し、場合によっては修復(再構成)が発生する。 インストール済みソフトの一覧が欲しいだけなら、 レジストリの Uninstall キー(レジストリの設定方法)を読むほうが安全。

WMI 関連ツール

wbemtest.exe

該当する型が見つかったら、Windows 標準搭載の wbemtest コマンドを使って、

select * from Win32_Product

とクエリしてみて、必要な情報が得られているか、ざっと眺めてみます。

使用する型が決まったら、スクリプトを書き始めて OK です。

script center

script center には、多数のスクリプト例が掲載されています。
取り扱いたいWMIの種類や、言語を選択していくと、掲載されているサンプルを絞り込めます。

移行メモ: TechNet Script Center / Gallery、Script-O-Matic、 WMI Administrative Tools(CIM Studio の WMI Object Browser)は、 いずれも 配布・サービスが終了している。 現在の代替は、

  • クラスの探索:Get-CimClass -ClassName Win32_*
  • リファレンス:WMI クラス - Microsoft Learn
  • サンプル:Get-CimInstance のヘルプ、および GitHub 上のコミュニティ リポジトリ

参考


Tags: シェル, インフラストラクチャ, Windows

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally