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_'dictionary'を使用します。

于 2012-10-02T18:21:48.073 に答える