2011-07-18 4 views
0

I가 원격 Windows 호스트에서 WMI 쿼리를 실행하기 위해 다음과 같은 자바 스크립트 :SWbemServices.ExecQuery - "잘못된 매개 변수"를 추가 WHERE 절

var wmiLocator = WScript.CreateObject("WbemScripting.Swbemlocator"); 
var wmiService = wmiLocator.ConnectServer(host, "root\\cimv2", user, pass); 

var items = wmiService.ExecQuery(query); 

for(var e = new Enumerator(items); ! e.atEnd(); e.moveNext()) 
{ 
    WScript.StdOut.Write(e.item().GetObjectText_()); 
} 

userpass 원격 host의 로그인 자격 증명 , query은 수행 할 WQL 쿼리입니다.

이 모든 것은 WQL 쿼리에 WHERE 절을 추가 할 때까지 제대로 작동합니다. 예를 들어,

SELECT * FROM Win32_LogicalDisk 

는 예상되는 결과를 산출하지만,

SELECT * FROM Win32_LogicalDisk WHERE DriveType=3 

"잘못된 매개 변수"오류 (wbemErrInvalidParameter/0x80041008)가 발생합니다.

WHERE 절을 사용하는 수많은 예제를 발견했으며 지원되지 않는 정보를 찾을 수 없습니다. 내가 여기서 뭔가를 놓치고 있니?

관련이있는 경우이 스크립트를 실행하는 호스트는 Windows XP Professional SP2입니다.

+1

쿼리 문자열은 어떻게 구성됩니까? 그 값을 반향하여 유효한 쿼리 문자열이 포함되어 있는지 확인하는 것과 같은 몇 가지 작업을 시도해 볼 수 있습니다. wbemtest.exe를 사용하여 쿼리를 실행할 수도 있습니다. –

+0

오, 이런, 당황 스럽네요 ... 이전에 "equals"기호가 포함 된 파싱 때문에 쿼리 문자열이 실제로 손상되었습니다. 감사합니다. 나는 이것이 닫힐 수 있다고 믿는다. – pdinklag

+0

그런 다음 해답을 아래 답변으로 게시하고 수락 한 것으로 표시하십시오. – Helen

답변

0

헬렌 (Helen)의 암시에 따라, 나는 나 자신에게 대답하고있다.

이전에 스크립트에서 수행 한 구문 분석으로 인해 쿼리 문자열이 변경되어 구문 적으로 유효하지 않게되어 잘못된 매개 변수 오류가 발생합니다.