ドライブレターのないボリュームの容量を取得する
2008/03/09 | ラベル: Tips, Windows, WMI |WMIを使ってディスク容量を取得するサンプルはたくさんあるけど、ドライブレターのない論理ボリュームの容量を取得するものがない。また、Win32_LogicalDisk クラスでも取得できない。
いろいろ調べて試した結果、Win32_Volume クラスで取得できることが分かった。以下は「C:\Users\xxx」にマウントしたボリュームの総容量と空き容量を取得する例。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Volume Where Caption = 'C:\\Users\\xxx'")
For Each objItem In colItems
WScript.Echo "Name: " & objItem.Name
WScript.Echo "Capacity: " & objItem.Capacity
WScript.Echo "Free Space: " & objItem.FreeSpace
WScript.Echo
Next
ExecQuery メソッドでは LIKE も使えるので、
Select * from Win32_Volume Where Caption LIKE 'C:\\%'
という書き方もできる。