PowerShell を使ってみる気になったのは、Unix のシェルに近いこともありますが、簡単にハードウェアリソース情報にアクセスできる gwmi というコマンドがあることによります。
gwmi というのは、実際には Get-WmiObject のことで、エイリアスされて、gwmi という短縮形で使用しています。
> alias gwmi CommandType Name ModuleName ----------- ---- ---------- Alias gwmi -> Get-WmiObject
ハードウェア情報にアクセスする gwmi コマンドの使い方は非常に簡単で、「gwmi -class win32_xxxxx」のxxxxx 部分を検索エンジンなどで調べて使えば、殆どのハードウェアやOSに関しての必要な情報が手に入ります。例えばBIOS情報。
> gwmi -class win32_bios SMBIOSBIOSVersion : P1.00 Manufacturer : American Megatrends Inc. Name : BIOS Date: 12/15/11 11:57:40 Ver: 04.06.05 SerialNumber : To Be Filled By O.E.M. Version : ALASKA - 1072009
自分のPCじゃなくて、ユーザーのPCに関して同様に情報を知りたい場合は、「-ComputerName <pc名>」というオプションを付けて
gwmi -ComputerName ad2700 -class win32_bios
とすれば、自身の管理権限があるPCであれば、ローカルPCと同様に情報にアクセスできます。アカウントがない場合は、さらに「-Credential」オプションを使えば良いわけですが、私は使わないのでここでは割愛。上記の例は、ASRock AD2700-ITX ボードなので、BIOSバージョンは入っているものの、シリアル番号が入ってませんが、シリアル番号がちゃんと入っているメーカー製PCのシリアル番号を取り込んで一覧表を作っておけば、故障時などシリアル番号が必要なのに、電源が入らないからBIOS画面でシリアル番号をチェック出来ない!というような出来事を防ぐことが出来ます。(狭い場所から引っ張り出せば目視で確認できますけどね。)
次のコマンドで私のPCには Atom D2700 2.13GHz という安物Atom PCが入っていることが分かります。
> gwmi -ComputerName ad2700 -class win32_processor Caption : x86 Family 6 Model 54 Stepping 1 DeviceID : CPU0 Manufacturer : GenuineIntel MaxClockSpeed : 2127 Name : Intel(R) Atom(TM) CPU D2700 @ 2.13GHz SocketDesignation : CPUSocket
結局、PC資産管理の仕事のためには、Win32_ に続くキーワードにどんなものがあるのかを知るのが全てで、これをどうやって知るかが課題というわけです。
企業ユーザーの場合、自分が使っているPCのスペックには興味がない人が大半です。メールとWebブラウザーがあれば仕事が出来るので、自分のPCじゃないし使えればいいや という気分で使っているんでしょうね。
こういう人のところでトラブルが起きるとすごく面倒。例えば、「PCが遅くなった」という話があっても、どんなCPUを積んでいるのか、搭載メモリ容量は、機種は?と尋ねても、「よくわかりませ〜ん。どうやって調べるんですか?」となって、逆に調べ方を伝えなくちゃいけなくなって調査が長引くことになるのは良くある話。
こんな時に、PC名を聞いて上記の感じでコマンドを発行できれば、時間節約になります。
- PCのシリアル番号:Win32_BIOSなど
- メモリスロット情報:Win32_PhysicalMemory
- HDD容量:Win32_LogicalDisk
- CPU情報:Win32_Processor
- ビデオ情報:Win32_VideoController
などなど。
わざわざユーザーのところに行かないで・・・・という便利さもよいのですが、自分が使っているPCについても、ケースを開けないで多くの情報にアクセスできるというのは大変ありがたいことです。