【问题标题】:Need help converting WMI values to VBScript variables需要帮助将 WMI 值转换为 VBScript 变量
【发布时间】:2023-04-05 02:07:01
【问题描述】:

我不是程序员,但我正在尝试通过使用 VBScripts 来扩展 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、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 ""

【问题讨论】:

  • 能否请您与MemDevicesPartNumbersSize 共享屏幕截图,为您实际输出,以及您期望的输出。我已经尝试了代码,它准确地显示了每个插槽中的内容,包括部件号和尺寸。
  • 我知道代码没有问题。例如,如果您有 4 个 DIMM,则 MemDevices 查询将返回 4 行。我想做的是学习如何将每一行变成变量。这样我就可以在 Bginfo 中分别列出每个插槽的大小、部件号和插槽号。

标签: vbscript wmi


【解决方案1】:

如果您需要未定义数量的相同类型的变量,您可以在 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

【讨论】:

  • @Ansgar Bginfo 实用程序的脚本是特殊的。您必须使用“echo”句子而不是“wscript.echo”。检查this page
  • 啊,对不起。没有意识到这一点。
  • 谢谢,这正是我想要的!我有另一个相关问题:假设我只想显示 RAM 2 的信息,但排除所有其他 RAMS。如果我知道至少有两个 RAMS,但我不知道确切的总数,我将如何只显示 RAM 2?
  • If i = 2 Then Echo "RAM " & i & " Size: " & Size & " Part Nr. " & PartNumbers End If 检查if statement syntax
  • 谢谢乔塞拉。我遇到的唯一问题是在列出第一个插槽之后,Bginfo 缩进了其余的行,这与这个人遇到的问题相同:link。不过,这似乎无法通过脚本修复。
猜你喜欢
  • 1970-01-01
  • 2018-11-24
  • 2019-12-23
  • 2021-11-06
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多