var sw = new ActiveXObject("WbemScripting.SWbemLocator") var cs = sw.ConnectServer(); var message = ""; var comlist = cs.ExecQuery("Select * from Win32_PnPEntity"); var e = new Enumerator(comlist); for(; !e.atEnd(); e.moveNext()){ var a = e.item(); if( a.Name.match(/\(COM\d+\)/) ) message += a.Name + "\n"; } WScript.Echo(message);
検索したところ、WMIをうねうねすれば取得できることがわかりました
⇒悩む日 - じーえす風の日記
Win32_SerialPortを探してもUSBシリアル変換のポートは出てこないので、結局全検索
⇒http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/sept04/hey0928.mspx
Windows2000だと、WMIクエリに LIKE演算子が使えない!
⇒http://www.microsoft.com/japan/technet/scriptcenter/topics/win2003/like.mspx
仕方ないので結局全部取得してから選別