WSH + WMI. Примеры. Класс Win32_DiskDrive
Класс Win32_DiskDrive содержит Информация о жестких дисках
class Win32_DiskDrive : CIM_DiskDrive
{
uint16 Availability;
uint32 BytesPerSector;
uint16 Capabilities[];
string CapabilityDescriptions[];
string Caption;
string CompressionMethod;
uint32 ConfigManagerErrorCode;
boolean ConfigManagerUserConfig;
string CreationClassName;
uint64 DefaultBlockSize;
string Description;
string DeviceID;
boolean ErrorCleared;
string ErrorDescription;
string ErrorMethodology;
string FirmwareRevision;
uint32 Index;
datetime InstallDate;
string InterfaceType;
uint32 LastErrorCode;
string Manufacturer;
uint64 MaxBlockSize;
uint64 MaxMediaSize;
boolean MediaLoaded;
string MediaType;
uint64 MinBlockSize;
string Model;
string Name;
boolean NeedsCleaning;
uint32 NumberOfMediaSupported;
uint32 Partitions;
string PNPDeviceID;
uint16 PowerManagementCapabilities[];
boolean PowerManagementSupported;
uint32 SCSIBus;
uint16 SCSILogicalUnit;
uint16 SCSIPort;
uint16 SCSITargetId;
uint32 SectorsPerTrack;
string SerialNumber;
uint32 Signature;
uint64 Size;
string Status;
uint16 StatusInfo;
string SystemCreationClassName;
string SystemName;
uint64 TotalCylinders;
uint32 TotalHeads;
uint64 TotalSectors;
uint64 TotalTracks;
uint32 TracksPerCylinder;
};
Методы
В документации упоминаются методы Reset и SetPowerState которые, как следует из той же документации не реализованы.
Свойства
Ниже будут описаны ряд свойств класса Win32_DiskDrive.- Availability
-
Только для чтения. Наличие и состояние устройства.
Значение
Описание
1 (0x1) Другой 2 (0x2) Неизвестный 3 (0x3) Full Power 4 (0x4) Предупреждение 5 (0x5) Тестируется 7 (0x7) Питание выключено 8 (0x8) Off Line 11 (0xB) Не установлен 12 (0xC) Ошибка установки 13 (0xD) Энергосбережение - неизвестно 14 (0xE) Энергосбережение - низкое энергопотребление 15 (0xF) Энергосбережение - в режиме ожидания 17 (0x11) Энергосбережение - предупреждение - BytesPerSector
- Только для чтения. Количество байт в каждом секторе для заданного диска
- Capabilities
- Только для чтения. Массив возможностей устройства.
Значение
Описание
0 Неизвестный 1 Другой 2 Последовательный доступ 3 Произвольный доступ 4 Поддержка записи 5 Шифрование 6 Сжатие 7 Поддержка сменных носителей 8 Ручная очистка 9 Автоматическая очистка 10 SMART уведомление 11 Поддержка двухсторонних носителей - CapabilityDescriptions
- Только для чтения. Список более подробных объяснений возможностей устройства доступа, указанных в массиве Capabilities
- Caption
- Только для чтения. Краткое описание объекта.
- CompressionMethod
-
Только для чтения. Алгоритм или инструмент, используемый в устройстве для поддержки сжатия.
Значение
Описание
Unknown Неизвестно, поддерживает устройство функции сжатия или нет. Compressed Устройство поддерживает функции сжатия Not Compressed Устройство не поддерживает сжатие. - ConfigManagerErrorCode
-
Только для чтения. Код ошибки конфигурации.
Значение
Описание
0 (0x0) Устройство работает правильно 1 (0x1) Устройство настроено неправильно 2 (0x2) Не удалось загрузить драйвер для этого устройства 3 (0x3) Драйвер для этого устройства поврежден, или недостаточно памяти или других ресурсов 4 (0x4) Устройство не работает должным образом. Драйвер или реестр может быть поврежден. 5 (0x5) Драйвер для устройства требуется ресурс, которым система не может управлять 6 (0x6) Загрузочная конфигурация для устройства конфликтует с другими устройствами 7 (0x7) Cannot filter. Вероятно, не фильтрует базар)) 8 (0x8) Отсутствует загруженный драйвер для этого устройства 9 (0x9) Устройство не работает должным образом. Ошибки в прошивке 10 (0xA) Устройство не может стартовать 11 (0xB) Device failed. 12 (0xC) Устройство не может найти достаточно свободных ресурсов для использования. 13 (0xD) Не удалось проверить ресурсы устройства. 14 (0xE) Устройство не может работать должным образом, пока компьютер не будет перезагружен. 15 (0xF) Устройство не работает должным образом 16 (0x10) Не удается выявить все ресурсы, которые использует устройство. 17 (0x11) Устройство запрашивает неизвестный тип ресурса. 18 (0x12) Драйвер устройства необходимо переустановить. 19 (0x13) Отказ загрузчика VxD. 20 (0x14) Реестр может быть поврежден. 21 (0x15) Сбой системы. 22 (0x16) Устройство отключено. 23 (0x17) Сбой системы. 24 (0x18) Устройство отсутствует, не работает должным образом, или не имеет всех драйверов. 25 (0x19) Windows находиться в состоянии настройки устройства. 26 (0x1A) Windows находиться в состоянии настройки устройства. 27 (0x1B) Устройство не имеет допустимой конфигурации журнала. 28 (0x1C) Драйверы устройств не установлены. 29 (0x1D) Устройство отключено. 30 (0x1E) Устройство использует IRQ такое же, как и другое устройство. 31 (0x1F) Устройство не работает должным образом. Не удалось загрузить необходимые драйвера устройств. - ConfigManagerUserConfig
- Только для чтения. Если значение True, то устройство использует пользовательскую конфигурацию.
- DefaultBlockSize
- Только для чтения. По умолчанию размер блока в байтах, для этого устройства.
- Description
- Только для чтения. Описание объекта.
- DeviceID
- Только для чтения. Уникальный идентификатор.
- ErrorDescription
- Только для чтения. Более подробная информацию об ошибке, записанной в LastErrorCode.
- ErrorMethodology
- Только для чтения. Тип обнаружения и исправления ошибок которые поддерживаются этим устройством.
- FirmwareRevision
- Только для чтения. Редакция микропрограммы.
- Index
- Только для чтения. Физический номер драйвера
- InstallDate
- Только для чтения. Дата и время когда объект был установлен.
- InterfaceType
-
Только для чтения.Тип интерфейса физического диска.
Возможные значения:
SCSI
HDC
IDE
USB
1394
- LastErrorCode
- Только для чтения. Последний код ошибки логического устройства.
- Manufacturer
- Только для чтения. Имя производителя устройства.
- MaxBlockSize
- Только для чтения. Максимальный размер блока в байтах.
- MaxMediaSize
- Только для чтения. Максимальный размер в килобайтах, который поддерживается этим устройством
- MediaLoaded
- Только для чтения. Устройство имеет читаемую файловую систему и доступно.
- MediaType
-
Тип носителей, которые можно использовать. Возможные значения:
External hard disk media
Removable media other than floppyCdRomWrite
Fixed hard disk media
Format is unknown - MinBlockSize
- Только для чтения. Минимальный размер блока в байтах.
- Model
- Только для чтения. Номер модели производителя.
- Name
- Только для чтения. Имя, под которым этот объект известен
- NeedsCleaning
- Только для чтения. Если значение True, то устройство доступа к среде нуждается в очистке.
- Partitions
- Только для чтения. Количество разделов на этом физическом диске, которые распознаются операционной системой
- PowerManagementCapabilities
-
Только для чтения. Код ошибки конфигурации.
Значение
Описание
0 (0x0) Неизвестный 1 (0x1) Не поддерживается 2 (0x2) Отключено 3 (0x3) Включено 4 (0x4) Режимов энергосбережения вводится автоматически. 5 (0x5) Состояние энергосбережения можно настраивать 6 (0x6) Поддержка циклов включения-выключения диска. 7 (0x7) Поддерживается временное включение питания. - PowerManagementSupported
- Только для чтения. Если значение True, то устройство поддерживает управление питанием
- SCSIBus
- Только для чтения. Номер SCSI шины
- SCSILogicalUnit
- Только для чтения. SCSI номер логического устройства
- SCSIPort
- Только для чтения. Номер порта SCSI в дисководе
- SCSITargetId
- Только для чтения. SCSI идентификатор номера диска.
- SectorsPerTrack
- Только для чтения. Количество секторов в каждой дорожке для этого физического диска.
- SerialNumber
- Только для чтения. Номер, присвоенный изготовителем для идентификации физического носителя.
- Signature
- Только для чтения. Идентификация диска. Это свойство может быть использовано для идентификации общего ресурса.
- Size
- Только для чтения. Размер диска. Он рассчитывается путем умножения общего количества цилиндров, дорожек в каждом цилиндре, секторов на каждой дорожке, и байт в каждом секторе.
- SerialNumber
- Только для чтения. Номер, присвоенный изготовителем для идентификации физического носителя.
- Status
-
Только для чтения. Текущий статус объекта. Возможные значения
"OK"
"Error"
"Degraded"
"Unknown"
"Pred Fail"
"Starting"
"Stopping"
"Service"
"Stressed"
"NonRecover"
"No Contact"
"Lost Comm" - SerialNumber
- Только для чтения. Номер, присвоенный изготовителем для идентификации физического носителя.
- StatusInfo
-
Только для чтения. Состояние логического устройства.
Значение
Описание
1 (0x1) Другой 2 (0x2) Неизвестный 3 (0x3) Включено 4 (0x4) Не включено. 5 (0x5) Не приминяемо - SystemName
- Только для чтения. Имя в системе.
- TotalCylinders
- Только для чтения. Общее количество цилиндров на диске.
- TotalHeads
- Только для чтения. Общее количество головок на диске.
- TotalSectors
- Только для чтения. Общее количество секторов на диске.
- TotalTracks
- Только для чтения. Общее количество дорожек на диске.
- TracksPerCylinder
- Только для чтения. Количество дорожек в цилиндре.
Пример получения сведений о дисках . WSH + WMI. Класс Win32_DiskDrive
strComputer = "."
WScript.Echo "Физические диски:"
Set objWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set colDisks = objWMI.ExecQuery("select * from Win32_DiskDrive")
for each objDisk in colDisks
WScript.Echo " Заголовок: " & vbTab & objDisk.Caption &VBCR _
& " ID устройства: " & vbTab & objDisk.DeviceID &VBCR _
& " Производитель: " & vbTab & objDisk.Manufacturer &VBCR _
& " Тип носителя: " & vbTab & objDisk.MediaType &VBCR _
& " Модель: " & vbTab & objDisk.Model &VBCR _
& " Имя: " & vbTab & objDisk.Name &VBCR _
& " Разделы: " & vbTab & objDisk.Partitions &VBCR _
& " Размер: " & vbTab & objDisk.Size &VBCR _
& " Состояние: " & vbTab & objDisk.Status
next
И еще один, более развернутый пример работы с классом Win32_DiskDrive.
//**************************************************************
// Информация о жестком диске
// Win32_DiskDrive
//**************************************************************
function ifnotnull(p) {
if (typeof(p) !== "undefined" && p !== null)
{
return( p+"\n");
}
else return(" не определено\n");
}
var forarr = new Array();
var ww;
var strComputer, objWMIService, colItems, DiskInfo, objItem, i
strComputer = "."
objWMIService = GetObject("winmgmts:\\\\" + strComputer + "\\root\\cimv2")
colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive");
enumItems = new Enumerator(colItems);
for (; !enumItems.atEnd(); enumItems.moveNext()) {
objItem = enumItems.item();
DiskInfo = "Информация о жестком диске\n\n";
DiskInfo += "Availability: "+ifnotnull(objItem.Availability);
DiskInfo += "BytesPerSector: "+ifnotnull(objItem.BytesPerSector);
try {
forarr= objItem.Capabilities.toArray();
ww='';
for (dd in forarr)
{
if (ww.length > 0) ww += ", ";
switch (forarr[dd]) {
case 0: ww += "Неизвестный";
break
case 1: ww += "Другой";
break
case 2: ww += "Последовательный доступ";
break
case 3: ww += "Произвольный доступ";
break
case 4: ww += "Поддержка записи";
break
case 5: ww += "Шифрование";
break
case 6: ww += "Сжатие";
break
case 7: ww += "Поддержка сменных носителей";
break
case 8: ww += "Ручная очистка";
break
case 9: ww += "Автоматическая очистка";
break
case 10: ww += "SMART уведомление";
break
case 11: ww += "Поддержка двухсторонних носителей";
break
default: ww += "Не известный код";
break
}
}
DiskInfo +="Capabilities: "+ww+"\n";
} catch(e){ DiskInfo += "Capabilities: Не определено \n";}
// Проверяем, существует ли массив
try {
DiskInfo += "CapabilityDescriptions: " +
(objItem.CapabilityDescriptions.toArray()).join(",") + "\n";
}catch(e){
DiskInfo += "CapabilityDescriptions: значение отсутствует\n";
}
DiskInfo += "Caption: "+ifnotnull(objItem.Caption);
DiskInfo += "CompressionMethod: "+ifnotnull(objItem.CompressionMethod);
DiskInfo += "ConfigManagerErrorCode: "+
ifnotnull(objItem.ConfigManagerErrorCode);
DiskInfo += "ConfigManagerUserConfig: "+
ifnotnull(objItem.ConfigManagerUserConfig);
DiskInfo += "CreationClassName: "+ifnotnull(objItem.CreationClassName);
DiskInfo += "DefaultBlockSize: "+ifnotnull(objItem.DefaultBlockSize);
DiskInfo += "Description: "+ifnotnull(objItem.Description);
DiskInfo += "DeviceID: "+ifnotnull(objItem.DeviceID);
DiskInfo += "ErrorCleared: "+ifnotnull(objItem.ErrorCleared);
DiskInfo += "ErrorDescription: "+ifnotnull(objItem.ErrorDescription);
DiskInfo += "ErrorMethodology: "+ifnotnull(objItem.ErrorMethodology);
DiskInfo += "Index: "+ifnotnull(objItem.Index);
DiskInfo += "InstallDate: "+ifnotnull(objItem.InstallDate);
DiskInfo += "InterfaceType: "+ifnotnull(objItem.InterfaceType);
DiskInfo += "LastErrorCode: "+ifnotnull(objItem.LastErrorCode);
DiskInfo += "Manufacturer: "+ifnotnull(objItem.Manufacturer);
DiskInfo += "MaxBlockSize: "+ifnotnull(objItem.MaxBlockSize);
DiskInfo += "MaxMediaSize: "+ifnotnull(objItem.MaxMediaSize);
DiskInfo += "MediaLoaded: "+ifnotnull(objItem.MediaLoaded);
DiskInfo += "MediaType: "+ifnotnull(objItem.MediaType);
DiskInfo += "MinBlockSize: "+ifnotnull(objItem.MinBlockSize);
DiskInfo += "Model: "+ifnotnull(objItem.Model);
DiskInfo += "Name: "+ifnotnull(objItem.Name);
DiskInfo += "NeedsCleaning: "+ifnotnull(objItem.NeedsCleaning);
DiskInfo += "NumberOfMediaSupported: "+ifnotnull(objItem.NumberOfMediaSupported);
DiskInfo += "Partitions: "+ifnotnull(objItem.Partitions);
DiskInfo += "PNPDeviceID: "+ifnotnull(objItem.PNPDeviceID);
// Проверяем, существует ли массив
try {
DiskInfo += "PowerManagementCapabilities: " +
(objItem.PowerManagementCapabilities.toArray()).join(",") + "\n";
}catch(e){
DiskInfo += "PowerManagementCapabilities: значение отсутствует\n";
}
DiskInfo += "PowerManagementSupported: "+ifnotnull(objItem.PowerManagementSupported);
DiskInfo += "SCSIBus: "+ifnotnull(objItem.SCSIBus);
DiskInfo += "SCSILogicalUnit: "+ifnotnull(objItem.SCSILogicalUnit);
DiskInfo += "SCSIPort: "+ifnotnull(objItem.SCSIPort);
DiskInfo += "SCSITargetId: "+ifnotnull(objItem.SCSITargetId);
DiskInfo += "SectorsPerTrack: "+ifnotnull(objItem.SectorsPerTrack);
DiskInfo += "SerialNumber: "+ifnotnull(objItem.SerialNumber);
DiskInfo += "Size: "+ifnotnull(objItem.Size);
DiskInfo += "StatusInfo: "+ifnotnull(objItem.StatusInfo);
DiskInfo += "SystemCreationClassName: "+ifnotnull(objItem.SystemCreationClassName);
DiskInfo += "SystemName: "+ifnotnull(objItem.SystemName);
DiskInfo += "TotalCylinders: "+ifnotnull(objItem.TotalCylinders);
DiskInfo += "TotalHeads: "+ifnotnull(objItem.TotalHeads);
DiskInfo += "TotalSectors: "+ifnotnull(objItem.TotalSectors);
DiskInfo += "TotalTracks: "+ifnotnull(objItem.TotalTracks);
DiskInfo += "TracksPerCylinder: "+ifnotnull(objItem.TracksPerCylinder);
// выводим данные
WScript.Echo(DiskInfo);
}
Требования.
Минимальная клиентская ОС - Windows Vista
Минимальная серверная ОС - Windows Server 2003
Более подробно о классе Win32_DiskDrive смотрите на MSDN.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуетс¤ регистраци¤).