WMIでプロセスID取得

WMI-Windows Management Instrumentationを使って、プロセス(pid)を知る方法。タスクマネージャーのプロセス一覧を取得するスクリプト(wmitester.jsで保存)。

var wbemServices =GetObject( "winmgmts://." );
var wbemObjectSet =wbemServices.InstancesOf("Win32_Process");
WScript.Echo( "ProcessId\tName\t\t\tExecutablePath");
for( var e =new Enumerator(wbemObjectSet); !e.atEnd(); e.moveNext() ){
  var item =e.item();
  WScript.Echo(item.ProcessId+"\t\t"+item.Name+"\t\t"+item.ExecutablePath );
}

WMI スクリプト入門 : 第 1 部のページのずーと下の方にVBScript版のサンプルが出ている(「まとめ」リスト 4. WMI Tester のチュートリアルに対する回答)。上のコードは、JScript版に書き換えたもの。世に出回っているサンプルスクリプトは難解だったけど。このサンプルはシンプルでいい。上記サイトに"winmgmts:"だとかの簡易的な解説がある。Win32_Process Classに取得可能なプロセス情報の一覧と説明が載ってる。

ダウンロード:Windows 2000 および Windows XP 用の Windows Script 5.6

とは言え、JScript.NET が後続しているので、JScript は「昔のJScript」となってるようだ。それと、コンパイラも存在しているようだ(jcs)。今のところ興味は薄い。cygwin の ps 代わりが欲しかっただけだから、取り敢えずここまで。

そうそう、bashから起動するときは、

$ cscript wmitester.js