SQL文でWMIの情報を取得[WQL]

メモ:

WMIの情報を取得するために、SWbemObjectSetからWMI Classesのインスタンスを取得し、取得したWMI Classesの各インスタンスのプロパティから情報を取得するという流れで作業します。

この作業をWQLと呼ばれるSQL文を使った方法で取得することができます。SQL文の場合、通常はデータベースやテーブルを操作しますが、WQLではWMI Classesが対象となります。

下記にデータベースとの対応を表します。

SQL(データベース)WQL
テーブルWMIのクラスセット(SWbemObjectSet)
WMIインスタンス(WMI Class)
WMIプロパティ

WQLの使い方

WQLを使用するには、SWbemServicesのExecQueryメソッドを使用します。データベースと同様にSELECT プロパティ[,プロパティ,…] FROM WMIクラス で取得できます。列名のアスタリスク(*)も使用することができます。

<script language="VBScript" content="text/vbscript">

Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}")
Set objClasses = objService.ExecQuery("SELECT size FROM Win32_LogicalDisk WHERE DeviceID = 'C:'")

For Each objDisk In objClasses
    document.write objDisk.size
Next

</script>
サンプルイメージ