-
Notifications
You must be signed in to change notification settings - Fork 0
MS_WMI
-
TOP > インフラストラクチャ > シェル > スクリプティング(
MS_Scripting.md)- WMI
WMI(Windows Management Instrumentation)は、Windowsを管理するためのAPIです。
Win32_ComputerSystemWin32_OperatingSystemWin32_NetworkAdapter
のような型があり、その型に応じたオブジェクトを通して、
Windows の設定や状態の情報を取得したり、変更したりできます。
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 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 をキーワードに含めて、時には英単語で、検索することです。
例えば、Windows にインストールされているプログラムの一覧を得るWMIを探すとき、
site:microsoft.com script wmi product list
で、ググると、Win32_Product class が上位でヒットします。
WMI の型の多くは Win32_ で始まります
(そうでないものもありますが、Windows OS の情報は Win32_ で始まります)。
注意:
Win32_Productは列挙するだけでインストール済み MSI パッケージの整合性検証が走り、 非常に遅く、イベントログを大量に出し、場合によっては修復(再構成)が発生する。 インストール済みソフトの一覧が欲しいだけなら、 レジストリのUninstallキー(レジストリの設定方法)を読むほうが安全。
該当する型が見つかったら、Windows 標準搭載の wbemtest コマンドを使って、
select * from Win32_Product
とクエリしてみて、必要な情報が得られているか、ざっと眺めてみます。
使用する型が決まったら、スクリプトを書き始めて OK です。
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
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。