Можно ли получить доступ к свойствам объекта WMI BY NAME в VBScript? - PullRequest
6 голосов
/ 23 ноября 2010

Вместо кода, подобного следующему:

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_IP4RouteTable",,48)
For Each objItem in colItems
    Wscript.Echo "Age: " & objItem.Age
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
Next

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

Wscript.Echo "Age: " & objItem("Age")
Wscript.Echo "Age: " & objItem.Properties("Age")
Wscript.Echo "Age: " & objItem.Item("Age")

И еще лучше, есть лилюбым способом вы можете сделать что-то вроде:

Dim colItems
Dim objItem
Dim aProperty
Set colItems = objWMIService.ExecQuery("Select * from Win32_IP4RouteTable",,48)
For Each objItem in colItems
   For Each aProperty in objItem.Properties
       Wscript.Echo aProperty.Name & ": " & objItem(aProperty.Name)
   Next
Next

1 Ответ

8 голосов
/ 23 ноября 2010

Вы можете получить доступ к именованным свойствам объектов WMI через свойство Properties_:

objItem.Properties_("Age")
objItem.Properties_.Item("Age")

И, конечно, вы также можете перечислить коллекцию Properties_:

For Each objItem in colItems
  For Each prop in objItem.Properties_
    If IsArray(prop) Then
      WScript.Echo prop.Name & ": " & Join(prop, ", ")
    Else
      Wscript.Echo prop.Name & ": " & prop
      ''# -- or --
      ''# Wscript.Echo prop.Name & ": " & prop.Value
    End If
  Next
Next
...