Visual Basic.NET 7.x (2002/03)系统管理员Visual Basic 10Visual Basic 9 (2008)Visual Basic 8 (2005)Win32Visual Basic 6中级开发WindowsVisual Basic
获取 WMI 提供的所有数据






3.88/5 (7投票s)
这个简单的函数将以编程方式枚举 WMI 类中的所有属性和值。
引言
在查看了数十个简单的脚本和应用程序,它们都从一个 WMI 类中提取 5-6 个信息字段后,我决定将所有内容提取到 DataTable
中,然后从中进行操作会更容易。这个简单的函数公开了给定 WMI 类上的所有属性和值,并返回一个包含结果的 DataTable
。
代码
首先,您需要使用这些库
Imports System.Data
Imports System.Management
Imports Microsoft.Win32
接下来,创建一个空的 DataTable
和一个 ManagementObjectSearcher
作为我们查询 WMI 服务的基准。
Dim dt As New DataTable()
Dim searcher As New ManagementObjectSearcher( _
"root\CIMV2", _ "SELECT * FROM " & wmiClass)
'where wmiClass is the input variable
为了获取所有属性名称,您必须获取搜索器中的第一个 ManagementObject
。然后,只需循环遍历对象中的每个属性名称,并为每个属性向表中添加一列。
For Each queryObj As ManagementObject In searcher.Get()
For Each item As PropertyData In queryObj.Properties()
Try
dt.Columns.Add(item.Name)
Catch ex As Exception
End Try
Next
Exit For
Next
然后,循环遍历搜索器中的每个对象,并将每个对象的每个属性的值添加到数据表中
For Each queryObj As ManagementObject In searcher.Get()
Dim dr As DataRow = dt.NewRow
For Each item As PropertyData In queryObj.Properties()
Try
dr(item.Name) = item.Value
Catch ex As Exception
End Try
Next
dt.Rows.Add(dr)
Next
完成了!现在,您拥有一个 DataTable
(dt
),其中包含给定 WMI 类中的所有属性和值。尝试将 wmiClass
变量设置为以下任何一个
Win32_OperatingSystem
Win32_OnBoardDevice
(硬件设备)Win32_Process
(当前进程)Win32_Printer
(打印机)Win32_Product
(已安装的软件)Win32_QuickFixEngineering
(已安装的补丁)
将 dt
绑定到 GridView
并查看结果。如果您想做得更花哨,您还可以使用 DropDownList
来设置 wmiClass
变量,并轻松查看有关您系统的海量数据。微软在这里提供了一个简单的 WMI 任务参考:http://msdn.microsoft.com/en-us/library/aa394585(VS.85).aspx。
尽情享用!