Получить информацию о дисках компьютера в Windows можно скриптами WSH/JScript/VBScript, используя WMI (Windows Management Instrumentation, WMI) и Win32_LogicalDisk class, например:
C: 150.0GB 100.3GB (67%) NTFS D: 548.5GB 208.2GB (38%) NTFS
Следующий скрипт на JScript собирает информацию о логических дисках локального компьютера (такой же скрипт на VBScript пишется аналогично):
var computer_name = "."; var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\"+ computer_name+"\\root\\cimv2"); var disks = wmi.ExecQuery("select * from Win32_LogicalDisk where DriveType=3"); var gb = 1024*1024*1024; var e = new Enumerator(disks); for (; !e.atEnd(); e.moveNext()){ var size_gb=e.item().Size/gb; var free_space_gb=e.item().FreeSpace/gb; var free_percentage = free_space_gb * 100 / size_gb; WScript.Echo(e.item().DeviceID + " "+ size_gb.toFixed(1)+"GB "+ free_space_gb.toFixed(1)+"GB" + " (" + free_percentage.toFixed(0) + "%)" + " " + e.item().FileSystem); }
Собственно сбор информации занимает всего три строки.
Остальная часть скрипта занимается выводом информации. Выводится имя диска, его размер и размер свободного пространства (пересчитанные из байт в ГБ). Помимо этих полей, можно выводить и другую информацию, например, название файловой системы (поле FileSystem) и т.д. Полный список доступных полей можно посмотреть в статье Win32_LogicalDisk class. Обратите внимание, некоторые поля могут быть неприменимы для логических дисков (например, используются только для физических).
Скрипт может также собирать информацию с других компьютеров в сети, необходимо задать сетевое имя переменной computer_name. Кроме того, пользователь, от имени которого запускается скрипт, должен иметь полномочия на удалённом компьютере.
Пример выполнения cscript //nologo list_logical_drives.js
:
C: 150.0GB 100.3GB (67%) NTFS D: 548.5GB 208.2GB (38%) NTFS
Аналогично можно получить информацию о физических дисках компьютера, если использовать Win32_DiskDrive class:
var computer_name = "."; var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\"+ computer_name+"\\root\\cimv2"); var disks = wmi.ExecQuery("select * from Win32_DiskDrive"); var gb = 1024*1024*1024; var e = new Enumerator(disks); for (; !e.atEnd(); e.moveNext()){ var size_gb = e.item().Size/gb; WScript.Echo(e.item().DeviceID+ " " + size_gb.toFixed(1)+"GB "+ " " + e.item().Status); }
Вывод cscript //nologo list_physical_drives.js
на том же компьютере даёт:
\\.\PHYSICALDRIVE0 698.6GB OK
Таким образом, используя эти два простых скрипта, мы можем получать информацию о состоянии дисковой подсистемы в физическом и логическом плане: состояние физических дисков, размер свободного места логических дисков и своевременно предпринимать меры по предотвращению серьёзных проблем.
Вывести эту же информацию в CMD файлах можно, вставив вызов скрипта через CSCRIPT:
CSCRIPT //NOLOGO list_physical_drives
.js
Эти и другие скрипты можно скачать по ссылке