前回のネタについて細かく見て行こう。
そもそもWMIとは何か。
これだけではなんだかよくわからないが、要するに、OSから得られる様々な情報に対する統括的なインターフェイスだ。Windowsの状態について知りたいならばこれで全て賄えるのである。
PerlからこのWMIへのアクセスには
そもそもWMIとは何か。
Windows Management Instrumentation - Wikipedia
http://ja.wikipedia.org/wiki/WMI
Windows Management Instrumentation(WMI)は、Windows Driver Modelへの拡張の一種で、システムの構成要素について情報収集と通知を行うオペレーティングシステムのインタフェースを提供する。
これだけではなんだかよくわからないが、要するに、OSから得られる様々な情報に対する統括的なインターフェイスだ。Windowsの状態について知りたいならばこれで全て賄えるのである。
PerlからこのWMIへのアクセスには
Win32::OLEモジュールを使う。基本的な構文はこうだ。$wmi = Win32::OLE->GetObject( "winmgmts:/root/CIMV2" ); $items = $wmi->ExecQuery( $sql );
$sqlにはSQL(みたいな)構文が入る。例として、デスクトップに使っている壁紙のファイル名を得るプログラムを書いてみよう。
#!/usr/bin/perl
use strict;
use warnings;
use Perl6::Say;
use Win32::OLE;
my $sql = "SELECT * FROM Win32_Desktop WHERE Wallpaper != Null";
my $wmi = Win32::OLE->GetObject( "winmgmts:/root/CIMV2" );
my $items = $wmi->ExecQuery( $sql );
for my $i ( in $items ) {
say $i->Wallpaper;
}
実行結果(Windows7での例)
9行目に使われている「
in」はWin32::OLEによって提供される演算子で、コレクションからリストを生成してくれる。次回、「【Perl, Windows】WMIに接続する(応用編)」へ続く。
- Newer: findについての覚え書き
- Older: 【Perl, Windows】使っているコーデックの一覧を得る
Comments:0
Trackbacks:0
- TrackBack URL for this entry
- http://blog.remora.cx/mt/mt-tb.fcgi/41
- Listed below are links to weblogs that reference
- 【Perl, Windows】WMIに接続する(基本編) from blog.remora.cx

