0

这是一个非常基本的程序,我想编写一个 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.是连接到WMI 4.是查询需要的数据 5和6.是运行收集的数据并打印出来。我遇到的问题是,当我使用正确的参数运行脚本时,它什么也没有打印出来,但是如果我用我通过命令传递的实际参数替换第 5 行中的 strProperty,它可以工作,并测试参数是否正确传递我有添加代码行以在获得有效参数后立即将其打印出来。我认为第 5 行使用“strProperty”作为属性来匹配数据,而不是 strProperty 的字符串值。

4

1 回答 1

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_“字典”。

于 2012-10-02T18:21:48.073 回答