2012-10-02 1 views
0

이것은 매우 기본적인 프로그램입니다. VB 스크립트를 작성하여 명령 줄에서 호출하고 몇 가지 매개 변수를 전달하고 VB 스크립트에서 파라미터 및 WMI로부터 몇 가지 정보를 쿼리, 코드는 다음과 같다 :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가 파라미터는 WMI (5) 및 (6)에 필요한 데이터를 쿼리 4.is에 연결할 3.is 저장하는 . 수집 된 데이터를 실행하여 인쇄하십시오. 내가 가진 문제는 올바른 매개 변수를 사용하여 스크립트를 실행할 때 아무 것도 출력하지 않지만 5 행의 strProperty를 실제 매개 변수로 바꾸면 명령과 함께 전달되고 매개 변수가 제대로 전달되는지 테스트 할 수 있습니다. 코드 행을 추가하여 작업 한 매개 변수를 얻으면 곧 출력 할 수 있습니다. 나는 5 행이 strProperty의 문자열 값이 아닌 데이터와 일치하는 속성으로 "strProperty"를 사용한다고 생각한다.

답변

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_ '사전'을 사용하십시오.

+0

대단히 고맙습니다. Properties_ (sProperty) .Value 부분을 추가하면 곧 코드가 작동하기 시작합니다. ! – Daniyal

관련 문제