com - 可以在 VBScript 中按名称访问 WMI 对象的属性吗?

标签 com vbscript wmi

而不是这样的代码:

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

最佳答案

您可以通过 Properties_ 访问 WMI 对象的命名属性。属性(property):

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

关于com - 可以在 VBScript 中按名称访问 WMI 对象的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4252430/

相关文章:

f# - 如何使用 F# 中的属性注释接口(interface)属性获取和设置

excel - 如何调试 COM C++ 进程外服务器? (客户端: Excel vba)

javascript - 如何将 VBScript 变量传递给 iMacros Javascript 宏?

c# - 如何创建向 COM 公开的只读属性?

vba - 如何调用从 VBScript 返回对象数组的方法(COM 对象的)

batch-file - vbs 可以用 InputBox 中的行创建 bat 文件吗?

windows - 如何知道 IEEE 1394 (FireWire) 是否连接到我的 Windows 7?

c# - 无法使用 Win32_DiskDrive 获取系统硬盘序列号

c# - 应用程序调用了为不同线程编码的接口(interface)

c++ - AfxGetInstanceHandle() 触发断言失败