WMI — это отраслевая рекомендация по разработке стандартизированной технологии доступа к управленческой информации в корпоративных средах. Эта информация включает в себя состояние системной памяти, список установленных на данный момент клиентских приложений и другие данные о состоянии клиента.
WMI — это масштабируемая архитектура управления системой, использующая унифицированный, основанный на стандартах и расширяемый объектно-ориентированный интерфейс. Он предоставляет стандартный метод взаимодействия с информацией системного администратора и базовым API WMI, используемый в основном разработчиками приложений для управления системой и системными администраторами для доступа к информации управления системой и управления ею.
WMI можно использовать для создания инструментов для организации и управления системной информацией, что позволяет системным администраторам более внимательно отслеживать действия системы.
WMI предоставляет богатый набор служб управления системой, встроенных в операционную систему Microsoft Windows, и в настоящее время используется большим количеством приложений, служб и устройств для предоставления комплексных возможностей управления операциями информационных технологий и организациями поддержки продуктов. Использование систем управления на базе WMI обеспечивает более надежную вычислительную среду и более высокую надежность системы, тем самым экономя корпоративные расходы.
Большое количество спецификаций, предоставляемых WMI, реализуют следующие задачи управления для многих высокопроизводительных приложений, таких как Microsoft Exchange, Microsoft SQL Server и Microsoft Internet Information Services (IIS).
1. Мониторинг производительности приложений
2. Обнаружение узких мест или сбоев
3. Управление и настройка приложений
4. Запрос данных приложения (с использованием объектно-реляционных обходов и запросов)
5. Выполняйте бесперебойные операции локального или удаленного управления.
Ниже мы используем пример, чтобы проиллюстрировать мощные функции WMI. Взяв vb6 в качестве столбца:
Справочник «Библиотека сценариев Microsoft WMI V1.1»
Код выглядит следующим образом:
Функция Option ExplicitDim WithEvents Sink As SWbemSinkDim j As Integer: используйте компоненты wmi для получения информации о компьютере. Каждая небольшая функция пишется отдельно для проверки каждым. Private Sub cmdDone_Click() Dim oWMINameSpace As SWbemServicesDim oLogicalDiskSet As SWbemObjectSetDim oLogicalDisk As SWbemObject Dim ObjSet As VariantDim. sDrive As StringDim sValue As StringDim dblSize As DoubleDim Obj As Variant Dim lIndex As Long Set oWMINameSpace = GetObject("winmgmts:") 'Получить информацию о диске При ошибке возобновить NextSet ObjSet = oWMINameSpace.InstancesOf("Win32_DiskDrive") Для каждого объекта в ObjSet List5. .Подпись & " - " & BytesToMegabytes(Obj.Size) & " GB"Далее 'Получите подробную информацию о каждом диске. При ошибке GoTo ErrorHandler'Set oWMINameSpace = GetObject("winmgmts:")Set oLogicalDiskSet = oWMINameSpace.InstancesOf("Win32_LogicalDisk") Для каждого oLogicalDisk в oLogicalDiskSet при ошибке Возобновить следующий диск = oLogicalDisk.deviceid ListView1.ListItems.Add , , sDrive lIndex = ListView1.ListItems.Count sValue = oLogicalDisk.Description & "" ListView1.ListItems(lIndex).SubItems(1) = sValue sValue = oLogicalDisk.FileSystem & "" ListView1.ListItems(lIndex).SubItems(2) = sValue sValue = oLogicalDisk.VolumeName & "" ListView1.ListItems(lIndex).SubItems(3) = sValue sValue = oLogicalDisk.VolumeSerialNumber & "" ListView1.ListItems(lIndex).SubItems (4) = sValue sValue = oLogicalDisk.Size & "" If IsNumeric(sValue) thendblSize = BytesToMegabytes(CDbl(sValue))sValue = CStr(dblSize) & "MB" End If ListView1.ListItems(lIndex).SubItems(5) = sValueNext CleanUp: Установите oLogicalDisk = NothingSet. oLogicalDiskSet = NothingSet oWMINameSpace = NothingExit Sub ErrorHandler:MsgBox "" и Err.Description GoTo CleanUp End Sub Private Sub Command1_Click() Unload MeEnd Sub Private Function BytesToMegabytes(Bytes As Double) As Double Dim dblAns As Double dblAns = (Bytes / 1024) / 1024 БайтаМегабайта = Format(dblAns, "###,###,##0.00") Конечная функция Private Sub Command2_Click()Dim oWMINameSpace As SWbemServicesDim SystemSet As VariantDim System As VariantDim ObjSet As VariantDim Obj As Variant Set oWMINameSpace = GetObject("winmgmts:" )'Набор операционной системы SystemSet = oWMINameSpace.InstancesOf("Win32_OperatingSystem") Для каждой системы в SystemSet List1.AddItem System.Caption List1.AddItem System.Manufacturer List1.AddItem System.BuildType & "" 'Похоже, что List1.AddItem System.Version List1.AddItem не может быть взят под Win9x System.SerialNumberNext'cpuSet ObjSet = oWMINameSpace.InstancesOf("Win32_Processor") для каждого объекта в списке ObjSet List2.AddItem Obj.Caption List2.AddItem Obj.currentlockspeed & "Mhz"Next End Sub Private Sub Command3_Click()Dim oWMINameSpace As SWbemServicesDim ObjSet As VariantDim Obj As VariantDim Adaptor As Variant 'Набор памяти oWMINameSpace = GetObject("winmgmts:")Set ObjSet = oWMINameSpace.InstancesOf("Win32_PhysicalMemory")Dim i как строка для каждого объекта в списке наборов объектов3.AddItem BytesToMegabytes(Obj.capacity) & "MB" & "Chip"Следующая 'Сетевая карта Установить раковину = Новый адаптер комплекта SWbemSink = GetObject("winmgmts:")Adapter.InstancesOfAsync Sink, "Win32_NetworkAdapter" End Sub Private Sub Form_Load()j = 0End Sub Private Sub Sink_OnObjectReady(ByVal objWbemObject As WbemScripting.ISWbemObject, ByVal objWbemAsyncContext As WbemScripting.ISWbemNamedValueSet) Dim Adaptor As Variant'Получить всю информацию об адаптере Set Adaptor = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" & j & "") List4.AddItem Adaptor.Description If IsNull(Adapter.MACAddress) Тогда List4.AddItem "Нет MAC-адреса" List4.AddItem " " Иначе List4.AddItem "Mac: " и адаптер.MACAddress List4.AddItem ""End If j = j + 1End Sub
Эта статья представлена здесь. Для получения дополнительной информации вы можете обратиться к этой статье: http://technet.microsoft.com/en-us/library/ee198932.aspx.