需要帮助将WMI值转换为VBScript变量
问题描述:
我不是程序员,但我试图扩展Bginfo可以通过VBScript从计算机收集的信息量。我有一些工作,但一些WMI查询返回多行值。我想分开这些多个行,以便我可以分开使用它们。下面是我部分地WMIGen创建了一个例子:需要帮助将WMI值转换为VBScript变量
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和尺寸都让我结果的多行取决于有多少存储设备也有。我怎样才能得到每条线的价值,并将它们变成变量?这是我在想它的外观:
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
能否请您分享'MemDevices','PartNumbers'和'你Size'实际输出的屏幕截图,并输出您期望。我试过了代码,它显示了每个插槽中包含的零件号和尺寸。 – omegastripes
我知道代码没有问题。例如,如果您有4个DIMM,MemDevices查询将返回4行。我想要做的是学习如何将这些行中的每一行变成变量。这样我就可以在Bginfo中分别列出每个插槽的大小,部件号和插槽编号。 – Chris