先のエントリーの WMI ですが、.NET系では、System.Management を参照設定することで、WQL という SQL ライクな問い合わせ言語で照会が出来る様でした。
WQLの例
select name, processid from Win32_Service where ProcessId = 2556 or ProcessId = 3944
ところが、これではいちいちプログラムを書かなくてはならず面倒なので、コンソールから直接入力できないものかな?と探ってみると WMIC というコンソールがあることが分かりました。コマンドプロンプトから WMIC と入力することで呼び出せます。
ところがこの WMIC、前述のWQLが通らない。こちらは専用構文が必要の様で、例えば以下の様に書きます。
C>wmic
wmic:rootcli>path win32_service where (processid = 2556 or processid = 3944) get processid,name
Name ProcessId
MSSQLSERVER 2556
SQLWriter 3944
wmic:rootcli>
注意点は以下
・From 句(?) の代わりに Path を書く (動詞と呼ばれる模様)。
・Where句は、条件式を括弧で囲む。
・Select句(?) は Get を書く。(但し、列の表示順序は変わらない)
あくまでコマンドラインで WQL を使用したい場合は、PowerShell を使えば、以下の様に書けるようです。
Get-WmiObject -Query "select name, processid from Win32_Service where ProcessId = 2556 or ProcessId = 3944"
ただ、PowerShellライクに書くと、以下な感じがスタンダードなんだろうかなあ。と
Get-WmiObject win32_service -Filter "ProcessId = 2556 or ProcessId = 3944" -Property "name,ProcessID"
いろいろ書き方があって悩む…