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

需要将WMI值转换为VBScript变量的帮助吗,vbscript,wmi,Vbscript,Wmi,我不是一名程序员,但我正在尝试通过使用VBScript扩展Bginfo可以从计算机收集的信息量。我已经让一些工作正常,但是一些WMI查询返回多行值。我想把这些多行分开,这样我就可以单独使用它们了。下面是我从WMIGen部分创建的一个示例: Const wbemFlagReturnImmediately = &h10 Const wbemFlagForwardOnly = &h20 strComputer = "." Dim Installed Dim Size

我不是一名程序员,但我正在尝试通过使用VBScript扩展Bginfo可以从计算机收集的信息量。我已经让一些工作正常,但是一些WMI查询返回多行值。我想把这些多行分开,这样我就可以单独使用它们了。下面是我从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、PartNumber和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

如果需要相同类型的未定义数量的变量,可以在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
partnumber
Size
为您提供的实际输出和您期望的输出共享屏幕截图。我试过代码,它准确地显示了每个插槽中的内容,包括零件号和尺寸。我知道代码没有问题。例如,如果您有4个DIMM,MemDevices查询将返回4行。我想做的是学习如何将这些行中的每一行转换为变量。这样,我可以在Bginfo中分别列出每个插槽的大小、零件号和插槽号。请您与
MemDevices
PartNumbers
size
分享您的实际输出和预期输出的屏幕截图。我试过代码,它准确地显示了每个插槽中的内容,包括零件号和尺寸。我知道代码没有问题。例如,如果您有4个DIMM,MemDevices查询将返回4行。我想做的是学习如何将这些行中的每一行转换为变量。这样,我就可以在Bginfo中分别列出每个插槽的大小、零件号和插槽号。@Bginfo实用程序的Ansgar脚本非常特殊。您必须使用“echo”语句而不是“wscript.echo”。检查啊,对不起。我不知道。谢谢,这就是我要找的!我还有一个相关的问题:假设我只想显示ram2的信息,但不包括所有其他RAM。如果我知道至少有两个RAM,但我不知道确切的总数,我如何仅显示RAM 2?
如果I=2,则回显“RAM”&I&“大小:”&Size&“零件编号”&partnumber结束,如果
检查谢谢JoSerra。我唯一的问题是在列出第一个插槽后,Bginfo缩进了其余的行,这与这家伙的问题相同:。但似乎无法通过脚本解决此问题。@Bginfo实用程序的Ansgar脚本非常特殊。您必须使用“echo”语句而不是“wscript.echo”。检查啊,对不起。我不知道。谢谢,这就是我要找的!我还有一个相关的问题:假设我只想显示ram2的信息,但不包括所有其他RAM。如果我知道至少有两个RAM,但我不知道确切的总数,我如何仅显示RAM 2?
如果I=2,则回显“RAM”&I&“大小:”&Size&“零件编号”&partnumber结束,如果
检查谢谢JoSerra。我唯一的问题是在列出第一个插槽后,Bginfo缩进了其余的行,这与这家伙的问题相同:。但这似乎不能通过脚本来修复。