Получить информацию о дисках компьютера в 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

Эти и другие скрипты можно скачать по ссылке

Все скрипты, использующие WMI

Информация о дисках в скрипте
Метки:         

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *