无法使用参数的值来查询WMI实例

时间:2012-10-02 15:16:14

标签: vbscript wmi

这是一个非常基本的程序,我想编写一个VB脚本,我将从命令行调用并传入一些参数,而VB脚本应该从WMI中获取参数并查询一些信息,代码就像这样:

1.strProperty = colNamedArguments.Item("Property") //this is to store the parameter
2.str..... some other parameters
3.Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & strNamespace)
4.Set colSWbemObjectSet = objSWbemServices.ExecQuery("SELECT * FROM " & strClass)
5.For Each objSWbemObject In colSWbemObjectSet
6.  wscript.echo objSWbemObject.strProperty

1和2.是存储参数3.is以连接到WMI 4.is查询所需的数据5和6.是运行收集的数据并打印出来。我遇到的问题是,当我使用正确的参数运行脚本时,它什么都没打印出来,但是如果我用第5行中的strProperty替换实际参数我用命令传递它是否有效,并测试参数是否正确传递我有添加代码行,以便在获得有效参数时立即将其打印出来。我认为第5行使用“strProperty”作为匹配数据的属性,而不是strProperty的字符串值。

1 个答案:

答案 0 :(得分:1)

如果你真的想要我从你的描述中收集的东西(访问在运行时指定的属性),这个

  Dim sComputer : sComputer = "."
  Dim sWQL      : sWQL      = "Select * from Win32_LogicalDisk"
  Dim sProperty : sProperty = "Name" ' "DriveType"
  Dim oWMIS     : Set oWMIS = GetObject("winmgmts:" _
      & "{impersonationLevel=impersonate}!\\" & sComputer & "\root\cimv2")
  Dim oColl, oItem
  Set oColl = oWMIS.ExecQuery(sWQL)
  For Each oItem in oColl
      WScript.Echo sProperty & ":", oItem.Properties_(sProperty).Value
  Next

输出:

Name: A:
Name: C:
Name: D:
Name: E:
Name: M:

或:

DriveType: 2
DriveType: 3
DriveType: 5
DriveType: 4
DriveType: 4

应该让你开始:使用项目的Properties_'字典'。