WMIを使ってディスク容量を表示してみる
Windowsでdfみたいなのってどうやるの?ていうのが分かんなかったので調べてみた。Windows Script HostからWBEM*1ロケータていう形のオブジェクトを叩いてSQLのサブセットであるWQLていうのを発行すればおk。らしい。なるほど、さっぱり分からん。
Set args = WScript.Arguments Const HARD_DISK = 3 host = args.item(0) user = args.item(1) pass = args.item(2) Set locator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = locator.ConnectServer(host, "", user, pass) Set disks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK) WScript.Echo "IP-Address" & vbTab & "Drive" & vbTab & "FreeSpace" & vbTab & "TotalSpace" For Each disk in disks WScript.Echo host & vbTab & disk.DeviceID & vbTab & disk.FreeSpace & vbTab & disk.Size Next
てきとうな名前(拡張子はvbsで)で保存して、コマンドプロンプトからcscriptで起動する。
C:\Users\USER>cscript //nologo df.vbs 192.168.2.21 "" "" IP-Address Drive FreeSpace TotalSpace 192.168.2.21 C: 79880331264 147981332480 192.168.2.21 D: 425829195776 480092614656 192.168.2.21 Q: 5028798464 10485755904 192.168.2.21 S: 706224128 1571811328
ローカルホストで使うときはこういうふうにユーザIDとパスワードを空指定する。
あ、リモートでも使えるかは確認してません><*2 *3 WMIさえ動けば動くはずなので、バージョン的にはWindows2000以降のどんなWindowsでも動くらしい。