WMIクラスを見つける方法。もうScriptomatic はいらない

先日、PowerShellでWMIを使ってMemoryの情報を取得したわけだが、Memoryの情報を保持しているクラス、「win32_PhysicalMemory
」を見つけるには、Scriptomatic というツールを使ったので遠回り感がぬぐえない。できることなら PowerShell 内で完結させたい。

gwmi -list

とすると、WMIクラスをズラーッと列挙します。 -namespace引数で名前空間を指定できますが省略するとデフォルトの名前空間が「root\CIMV2」なので大丈夫。
あまりにも結果の量が多いので絞り込みましょう。メモリの情報を保持しているクラスはおそらく「memory」という文字を含んでいるだろうから、

gwmi -list | Select-String "memory"

とすれば見当をつけることができるでしょう。おそらく「Win32_MemoryDevice」「Win32_PhysicalMemory」あたりかな、と。


あとは

gwmi Win32_MemoryDevice

gwmi Win32_PhysicalMemory

とやって結果を見ていけば欲しい情報がゲットできるでしょう。

つまり、PowerShell で WMIのクラスを知りたいなら、gwmi -list でOK。


追記:せっかくオブジェクトベースの結果を吐き出すPowerShellなのに文字列検索である Select-String を使うのは筋悪過ぎ。

gwmi -list | where {$_.name -match "memory"}

PowerShellらしい書き方ですね。でも冗長だと感じてしまうんですよね−。。