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