[WMI] WMIのクエリー

2011年2月7日

 先のエントリーの 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"

 いろいろ書き方があって悩む…






カテゴリー: PowerShell, Windows, WMI

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org