Класс Win32_DiskDrive — информация о жестком диске

Класс Win32_DiskDrive — информация о жестком диске Объектная модель Windows Management Instrumentation

Класс Win32_DiskDrive позволяет получить информацию о жестком диске, точнее о его технических параметрах (количество секторов, головок, дополнительные функции и так далее). В состав класса входят 49 свойств, которые доступны только для чтения и 2 метода, которые не имеют реализации. Win32_DiskDrive происходит от класса CIM_DiskDrive, который является производным от CIM_MediaAccessDevice. Класс CIM_MediaAccessDevice происходит от CIM_LogicalDevice.

Класс находится в пространстве имен CIMV2, MOF файл — Cimwin32.mof, динамическая библиотека Cimwin32.dll, провайдер Win32. Если открыть утилиту WMI CIM Studio, выбрать в левой панели наш класс, а в правой панели перейти на вкладку Associations, то можно просмотреть ассоциативные связи с классами Win32_DiskPartition и Win32_PhysicalMedia.

Просмотр ассоциативных классов, связанных с win32_diskdrive

Аналогично, для просмотра ассоциативных связей можно в командной строке выполнить следующую команду:

wmic CLASS Win32_DiskDrive ASSOC

Так как вывод происходит в htm формате, то можно просто перенаправить его во внешний файл:

wmic CLASS Win32_DiskDrive ASSOC>"путь к файлу"

В принципе, в той же командной строке можно получить описание самого класса (точнее, список всех его свойств и методов):

wmic CLASS Win32_DiskDrive

Ниже я привел описание некоторых свойств для класса Win32_DiskDrive, которые позволяют получить информацию о жестком диске. В круглых скобках содержится имя класса, от которого свойство унаследовано.

Свойства Win32_DiskDrive

BytesPerSectorКоличество байт в каждом секторе для заданного диска.

CapabilitiesСвойство содержит информацию о дополнительных технических характеристиках в виде числовых значений, хранящихся в виде массива, (CIM_MediaAccessDevice). Примеры значений:

  • 0 — неизвестно
  • 1 — другое
  • 2 — последовательный доступ
  • 3 — случайный доступ
  • 4 — поддержка записи
  • 5 — шифрование
  • 6 — сжатие
  • 7 — поддержка съемных носителей
  • 8 — ручная очистка
  • 9 — автоматическая очистка
  • 10 — SMART уведомление
  • 11 — Поддержка Dual-Sided носителя
  • 12 — Ejection Prior to Drive Dismount Not Required — это оставим как есть :)

CapabilityDescriptionsМассив строк, в которых хранится описание характеристик, указанных в свойстве Capabilities, (CIM_MediaAccessDevice)

CaptionКраткое описание объекта, (CIM_ManagedSystemElement).

CompressionMethodАлгоритм или инструмент, используемый в устройстве для поддержки сжатия, информация о жестком диске, (CIM_MediaAccessDevice). Возвращает строки:

  • Unknown — Неизвестно, поддерживает устройство возможность сжатия или нет.
  • Compressed — Устройство поддерживает возможность сжатия данных, но его схема сжатия не известно или не разглашается.
  • Not Compressed — Устройство не поддерживает сжатие.

ConfigManagerUserConfigВозвращает логическое значение (TRUE или FALSE). Если значение TRUE, то данное устройство использует конфигурацию, определенную пользователем, (CIM_LogicalDevice).

CreationClassNameИмя класса-создателя, (CIM_LogicalDevice).

DefaultBlockSizeРазмер по умолчанию блока в байтах, (CIM_MediaAccessDevice).

DescriptionОписание объекта, (CIM_ManagedSystemElement).

DeviceIDУникальный идентификатор устройства, это свойство является ключевым, (CIM_LogicalDevice).

IndexФизический номер диска

InterfaceTypeСобственно, тип интерфейса. Возможные значения:

  • SCSI
  • HDC
  • IDE
  • USB
  • 1394

ManufacturerНаименование изготовителя диска. Например: «Seagate»

MaxBlockSizeМаксимальный размер блока в байтах, (CIM_MediaAccessDevice).

MaxMediaSizeМаксимальный размер носителя в килобайтах, (CIM_MediaAccessDevice).

MediaTypeТип носителей используемых данным устройством. Возможные значения:

  • External hard disk media
  • Removable media other than floppy
  • Fixed hard disk media
  • Format is unknown
  • Removable media
  • Fixed hard disk
  • Unknown

MinBlockSizeМинимальный размер блока в байтах, (CIM_MediaAccessDevice).

ModelНомер модели производителя.

NameМетка, определяющая объект (устройство), (CIM_ManagedSystemElement).

NeedsCleaningЕсли свойство возвращает значение True, значит устройство нуждается в очистке. Поддерживаемый тип очистки указывается в свойстве Capabilities, информация о жестком диске, (CIM_MediaAccessDevice).

NumberOfMediaSupportedМаксимальное количество носителей, которые могут поддерживаться или подключаться (при условии, что устройство поддерживает несколько индивидуальных носителей), (CIM_MediaAccessDevice).

PartitionsКоличество разделов на текущем диске, которые распознаются операционной системой.

PowerManagementCapabilitiesСвойство содержит массив, хранящий информацию о специфических элементах питания устройства, (CIM_LogicalDevice).

Возможные значения:

  • (0x0) — Неизвестно
  • (0x1) — Не поддерживается
  • (0x2) — Отключено
  • (0x3) — Включено. Функции управления питанием в настоящее время включена, но точный набор функций неизвестен или информация недоступна.
  • (0x4) — Энергосберегающий режим активируется автоматически. Устройство может изменять свое состояние питания на основе использования или по другим критериям.
  • (0x5) — Состояние питания можно настраивать. Поддерживается метод SetPowerState, который находится в родительском классе CIM_LogicalDevice и может быть реализован.
  • (0x6) — Поддержка полных циклов включения-выключения диска. Метод SetPowerState можно вызвать с установленным значением 5 (Power Cycle) параметра PowerState.
  • (0x7) — Поддерживается временное включение питания. Метод SetPowerState можно вызвать с установленным значением 5 (Power Cycle) параметра PowerState и установкой заданной даты и времени, или интервала, для включения питания. Получение информации о жестких дисках.

PowerManagementSupportedСвойство содержит логические значения. Если TRUE, то устройство поддерживает управление питанием (например, можно поставить в режим ожидания). Само свойство не означает, что функции управления питанием в настоящее время включены, только то, что логическое устройство поддерживает управление питанием, (CIM_LogicalDevice).

SCSIBusНомер SCSI шины

SCSILogicalUnitSCSI логический номер устройства (LUN)

SCSIPortSCSI номер порта

SCSITargetIdSCSI идентификатор

SectorsPerTrackКоличество секторов в каждой дорожке для даного физического диска.

SerialNumberСерийный номер устройства (например, WD-WM3493798728), определенный производителем. Фактически, из всего списка (бесполезных) свойств, данное самое важное, но….. оно не поддерживается в Windows Server 2003 и Windows XP.

SignatureИдентификация диска. Это свойство может быть использовано для определения общего ресурса. Оно было добавлено для Windows XP.

SizeРазмер диска. Он рассчитывается путем умножения общего количества цилиндров, дорожек в каждом цилиндре, секторов в каждой дорожке, и байт в каждом секторе.

StatusТекущий статус объекта, (CIM_ManagedSystemElement).

Возможные значения:

  • «OK»
  • «Error»
  • «Degraded»
  • «Unknown»
  • «Pred Fail»
  • «Starting»
  • «Stopping»
  • «Service»
  • «Stressed»
  • «NonRecover»
  • «No Contact»
  • «Lost Comm»

SystemNameНазвание компьютера, (CIM_LogicalDevice).

TotalCylindersСвойство содержит общее количество цилиндров на диске, используется 13 h прерывание BIOS.

TotalHeadsОбщее количество головок на диске, используется 13 h прерывание BIOS.

TotalSectorsОбщее количество секторов на диске, используется 13 h прерывание BIOS.

TotalTracksОбщее количество дорожек на диске, используется 13 h прерывание BIOS

TracksPerCylinderКоличество дорожек в каждом цилиндре, используется 13 h прерывание BIOS.

Нахождение класса win32_diskdrive в дереве классов

Ниже, как всегда, я приведу два сценария на языках vbscript (Win32_DiskDrive.vbs) и jscript (Win32_DiskDrive.js), они по сути просто записывают в переменную значения свойств и потом выводят эту информацию о жестком диске и все.

'**************************************************************' Информация о жестком диске' Win32_DiskDrive.vbs '************************************************************** OptionExplicit Dim strComputer, objWMIService, colItems, MouseInfo, DiskInfo, objItem, i strComputer = "."Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48) DiskInfo = "Информация о жестком диске" & vbCrlf & vbCrlf ' Перебираем коллекциюForEach objItem in colItems   DiskInfo = DiskInfo & "Availability: " & objItem.Availability & vbCrLf   DiskInfo = DiskInfo & "BytesPerSector: " & objItem.BytesPerSector & vbCrLf    ' Проверяем, существует ли массив   IfNOT isNull(objItem.Capabilities) Then        ' Начинаем обработку массива        For i = Lbound(objItem.Capabilities) toUbound(objItem.Capabilities)            'DiskInfo = DiskInfo & "Capabilities: " & objItem.Capabilities(i) & vbCrLf            SelectCase objItem.Capabilities(i)                Case 0 DiskInfo = DiskInfo & "Capabilities: " & "неизвестно" & vbCrLf                Case 1 DiskInfo = DiskInfo & "Capabilities: " & "другое" & vbCrLf                Case 2 DiskInfo = DiskInfo & "Capabilities: " & "последовательный доступ" & vbCrLf                Case 3 DiskInfo = DiskInfo & "Capabilities: " & "случайный доступ" & vbCrLf                Case 4 DiskInfo = DiskInfo & "Capabilities: " & "поддержка записи" & vbCrLf                Case 5 DiskInfo = DiskInfo & "Capabilities: " & "шифрование" & vbCrLf                Case 6 DiskInfo = DiskInfo & "Capabilities: " & "сжатие" & vbCrLf                Case 7 DiskInfo = DiskInfo & "Capabilities: " & "поддержка съемных носителей" & vbCrLf                Case 8 DiskInfo = DiskInfo & "Capabilities: " & "ручная очистка" & vbCrLf                Case 9 DiskInfo = DiskInfo & "Capabilities: " & "автоматическая очистка" & vbCrLf                Case 10 DiskInfo = DiskInfo & "Capabilities: " & "SMART уведомление" & vbCrLf                Case 11 DiskInfo = DiskInfo & "Capabilities: " & "Поддержка Dual-Sided носителя" & vbCrLf                CaseElse DiskInfo = DiskInfo & "Capabilities: " & "Ejection Prior to Drive Dismount Not Required" & vbCrLf            EndSelect        Next    EndIf     ' Проверяем, существует ли массив    IfNOT isNull(objItem.CapabilityDescriptions) Then        DiskInfo = DiskInfo & "CapabilityDescriptions: " & Join(objItem.CapabilityDescriptions, ",") & vbCrLf    EndIf     DiskInfo = DiskInfo & "Caption: " & objItem.Caption & vbCrLf    DiskInfo = DiskInfo & "CompressionMethod: " & objItem.CompressionMethod & vbCrLf    DiskInfo = DiskInfo & "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode & vbCrLf    DiskInfo = DiskInfo & "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig & vbCrLf    DiskInfo = DiskInfo & "CreationClassName: " & objItem.CreationClassName & vbCrLf    DiskInfo = DiskInfo & "DefaultBlockSize: " & objItem.DefaultBlockSize & vbCrLf    DiskInfo = DiskInfo & "Description: " & objItem.Description & vbCrLf    DiskInfo = DiskInfo & "DeviceID: " & objItem.DeviceID & vbCrLf    DiskInfo = DiskInfo & "ErrorCleared: " & objItem.ErrorCleared & vbCrLf    DiskInfo = DiskInfo & "ErrorDescription: " & objItem.ErrorDescription & vbCrLf    DiskInfo = DiskInfo & "ErrorMethodology: " & objItem.ErrorMethodology & vbCrLf    DiskInfo = DiskInfo & "Index: " & objItem.Index & vbCrLf    DiskInfo = DiskInfo & "InstallDate: " & objItem.InstallDate & vbCrLf    DiskInfo = DiskInfo & "InterfaceType: " & objItem.InterfaceType & vbCrLf    DiskInfo = DiskInfo & "LastErrorCode: " & objItem.LastErrorCode & vbCrLf    DiskInfo = DiskInfo & "Manufacturer: " & objItem.Manufacturer & vbCrLf    DiskInfo = DiskInfo & "MaxBlockSize: " & objItem.MaxBlockSize & vbCrLf    DiskInfo = DiskInfo & "MaxMediaSize: " & objItem.MaxMediaSize & vbCrLf    DiskInfo = DiskInfo & "MediaLoaded: " & objItem.MediaLoaded & vbCrLf    DiskInfo = DiskInfo & "MediaType: " & objItem.MediaType & vbCrLf    DiskInfo = DiskInfo & "MinBlockSize: " & objItem.MinBlockSize & vbCrLf    DiskInfo = DiskInfo & "Model: " & objItem.Model & vbCrLf    DiskInfo = DiskInfo & "Name: " & objItem.Name & vbCrLf    DiskInfo = DiskInfo & "NeedsCleaning: " & objItem.NeedsCleaning & vbCrLf    DiskInfo = DiskInfo & "NumberOfMediaSupported: " & objItem.NumberOfMediaSupported & vbCrLf    DiskInfo = DiskInfo & "Partitions: " & objItem.Partitions & vbCrLf    DiskInfo = DiskInfo & "PNPDeviceID: " & objItem.PNPDeviceID & vbCrLf     ' Проверяем, существует ли массив    ifNOT isNull(objItem.PowerManagementCapabilities) Then        DiskInfo = DiskInfo & "PowerManagementCapabilities: " & Join(objItem.PowerManagementCapabilities, ",") & vbCrLf    EndIf    DiskInfo = DiskInfo & "PowerManagementSupported: " & objItem.PowerManagementSupported & vbCrLf   DiskInfo = DiskInfo & "SCSIBus: " & objItem.SCSIBus & vbCrLf   DiskInfo = DiskInfo & "SCSILogicalUnit: " & objItem.SCSILogicalUnit & vbCrLf   DiskInfo = DiskInfo & "SCSIPort: " & objItem.SCSIPort & vbCrLf   DiskInfo = DiskInfo & "SCSITargetId: " & objItem.SCSITargetId & vbCrLf   DiskInfo = DiskInfo & "SectorsPerTrack: " & objItem.SectorsPerTrack & vbCrlf    'DiskInfo = DiskInfo & "SerialNumber: " & objItem.SerialNumber & vbCrLf  ' недоступно в XP   DiskInfo = DiskInfo & "Signature: " & objItem.Signature & vbCrLf   DiskInfo = DiskInfo & "Size: " & objItem.Size & vbCrLf   DiskInfo = DiskInfo & "Status: " & objItem.Status & vbCrLf   DiskInfo = DiskInfo & "StatusInfo: " & objItem.StatusInfo & vbCrLf   DiskInfo = DiskInfo & "SystemCreationClassName: " & objItem.SystemCreationClassName & vbCrLf   DiskInfo = DiskInfo & "SystemName: " & objItem.SystemName & vbCrLf   DiskInfo = DiskInfo & "TotalCylinders: " & objItem.TotalCylinders & vbCrLf   DiskInfo = DiskInfo & "TotalHeads: " & objItem.TotalHeads & vbCrLf   DiskInfo = DiskInfo & "TotalSectors: " & objItem.TotalSectors & vbCrLf   DiskInfo = DiskInfo & "TotalTracks: " & objItem.TotalTracks & vbCrLf   DiskInfo = DiskInfo & "TracksPerCylinder: " & objItem.TracksPerCylinder & vbCrLf & vbCrLfNext ' выводим данныеWScript.Echo  DiskInfo
//**************************************************************// Информация о жестком диске// Win32_DiskDrive.js //************************************************************** var strComputer, objWMIService, colItems, MouseInfo, DiskInfo, objItem, ivar wbR = 0x10, wbF = 0x20; strComputer ="."objWMIService = GetObject("winmgmts:\\"+ strComputer +"\root\cimv2")colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive","WQL", wbR | wbF); DiskInfo ="Информация о жестком дискеnn"; // Перебираем коллекциюenumItems =new Enumerator(colItems);for(;!enumItems.atEnd(); enumItems.moveNext()){    objItem = enumItems.item();    DiskInfo +="Availability: "+ objItem.Availability+"n";   DiskInfo +="BytesPerSector: "+ objItem.BytesPerSector+"n";    // Проверяем, существует ли массив    try{         DiskInfo +="Capabilities: "+(objItem.Capabilities.toArray()).join(",")+"n";    }catch(e){         DiskInfo +="Capabilities: значение отсутствуетn";     }     // Проверяем, существует ли массив    try{         DiskInfo +="CapabilityDescriptions: "+(objItem.CapabilityDescriptions.toArray()).join(",")+"n";    }catch(e){         DiskInfo +="CapabilityDescriptions: значение отсутствуетn";     }     DiskInfo +="Caption: "+ objItem.Caption+"n";    DiskInfo +="CompressionMethod: "+ objItem.CompressionMethod+"n";    DiskInfo +="ConfigManagerErrorCode: "+ objItem.ConfigManagerErrorCode+"n";    DiskInfo +="ConfigManagerUserConfig: "+ objItem.ConfigManagerUserConfig+"n";    DiskInfo +="CreationClassName: "+ objItem.CreationClassName+"n";    DiskInfo +="DefaultBlockSize: "+ objItem.DefaultBlockSize+"n";    DiskInfo +="Description: "+ objItem.Description+"n";    DiskInfo +="DeviceID: "+ objItem.DeviceID+"n";    DiskInfo +="ErrorCleared: "+ objItem.ErrorCleared+"n";    DiskInfo +="ErrorDescription: "+ objItem.ErrorDescription+"n";    DiskInfo +="ErrorMethodology: "+ objItem.ErrorMethodology+"n";    DiskInfo +="Index: "+ objItem.Index+"n";    DiskInfo +="InstallDate: "+ objItem.InstallDate+"n";    DiskInfo +="InterfaceType: "+ objItem.InterfaceType+"n";    DiskInfo +="LastErrorCode: "+ objItem.LastErrorCode+"n";    DiskInfo +="Manufacturer: "+ objItem.Manufacturer+"n";    DiskInfo +="MaxBlockSize: "+ objItem.MaxBlockSize+"n";    DiskInfo +="MaxMediaSize: "+ objItem.MaxMediaSize+"n";    DiskInfo +="MediaLoaded: "+ objItem.MediaLoaded+"n";    DiskInfo +="MediaType: "+ objItem.MediaType+"n";    DiskInfo +="MinBlockSize: "+ objItem.MinBlockSize+"n";    DiskInfo +="Model: "+ objItem.Model+"n";    DiskInfo +="Name: "+ objItem.Name+"n";    DiskInfo +="NeedsCleaning: "+ objItem.NeedsCleaning+"n";    DiskInfo +="NumberOfMediaSupported: "+ objItem.NumberOfMediaSupported+"n";    DiskInfo +="Partitions: "+ objItem.Partitions+"n";    DiskInfo +="PNPDeviceID: "+ objItem.PNPDeviceID+"n";     // Проверяем, существует ли массив    try{         DiskInfo +="PowerManagementCapabilities: "+(objItem.PowerManagementCapabilities.toArray()).join(",")+"n";    }catch(e){         DiskInfo +="PowerManagementCapabilities: значение отсутствуетn";     }    DiskInfo +="PowerManagementSupported: "+ objItem.PowerManagementSupported+"n";   DiskInfo +="SCSIBus: "+ objItem.SCSIBus+"n";   DiskInfo +="SCSILogicalUnit: "+ objItem.SCSILogicalUnit+"n";   DiskInfo +="SCSIPort: "+ objItem.SCSIPort+"n";   DiskInfo +="SCSITargetId: "+ objItem.SCSITargetId+"n";   DiskInfo +="SectorsPerTrack: "+ objItem.SectorsPerTrack+"n";    //DiskInfo += "SerialNumber: " + objItem.SerialNumber + "n";  // недоступно в XP   DiskInfo +="Signature: "+ objItem.Signature+"n";   DiskInfo +="Size: "+ objItem.Size+"n";   DiskInfo +="Status: "+ objItem.Status+"n";   DiskInfo +="StatusInfo: "+ objItem.StatusInfo+"n";   DiskInfo +="SystemCreationClassName: "+ objItem.SystemCreationClassName+"n";   DiskInfo +="SystemName: "+ objItem.SystemName+"n";   DiskInfo +="TotalCylinders: "+ objItem.TotalCylinders+"n";   DiskInfo +="TotalHeads: "+ objItem.TotalHeads+"n";   DiskInfo +="TotalSectors: "+ objItem.TotalSectors+"n";   DiskInfo +="TotalTracks: "+ objItem.TotalTracks+"n";   DiskInfo +="TracksPerCylinder: "+ objItem.TracksPerCylinder+"nn";} // выводим данныеWScript.Echo(DiskInfo);
Оцените статью
Технологии программирования и ведение блога
Добавить комментарий