需要帮助将 WMI 值转换为 VBScript 变量

Need help converting WMI values to VBScript variables

我不是程序员,但我正在尝试使用 VBScript 扩展 Bginfo 可以从计算机收集的信息量。我有一些工作,但一些 WMI 查询 return 多行值。我想将这些多行分开,以便我可以单独使用它们。这是我从 WMIGen 部分创建的示例:

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly       = &h20

strComputer = "."


Dim Installed
Dim Size


Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
Set colSlots = objWMIService.ExecQuery( "SELECT * FROM Win32_PhysicalMemoryArray", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly )
Set colMem = objWMIService.ExecQuery( "SELECT * FROM Win32_PhysicalMemory", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly )

On Error Resume Next

For Each objSlot In colSlots
    TotalSlots = objSlot.MemoryDevices
Next

For Each objMem In colMem
    MemDevices = objMem.DeviceLocator
    PartNumbers = objMem.PartNumber
    Size = Round(objMem.Capacity / 1073741824) & " GB"
Next

On Error Goto 0

MemDevices、PartNumbers 和 Size 都会根据内存设备的数量给出多行结果。如何单独获取每一行的值并将它们变成变量?这是我考虑的外观:

RAM 1: Size in GB, Part Number, slot number on board.
RAM 2: Size in GB, Part number, slot number on board
"" Continue the list for the remaining RAM sticks ""

如果您需要未定义数量的相同类型的变量,您可以在 VBScript 中使用数组变量。 对于与 Bginfo 实用程序一起使用,不需要该变量。 您可以在循环中生成信息:

i = 1
For Each objMem In colMem
    MemDevices = objMem.DeviceLocator
    PartNumbers = objMem.PartNumber
    Size = Round(objMem.Capacity / 1073741824) & " GB"
    Echo "RAM " & i & " Size: " & Size & " Part Nr. " & PartNumbers
    i = i + 1
Next