2013-06-24 3 views
1

Win7 (x64)에서 다음 스크립트를 실행하여 조각 모음이 필요한 볼륨이 있는지 확인하려고합니다.Framentation 상태를 검사 할 때 오류가 발생합니다.

Set VolumeList = GetObject("winmgmts:").ExecQuery("Select * from Win32_Volume") 

For Each objVolume in VolumeList 
    errResult = objVolume.DefragAnalysis(blnRecommended, objReport) 
    If errResult = 0 then 

     Wscript.Echo "Used space: " & objReport.UsedSpace 
     Wscript.Echo "Volume name: " & objReport.VolumeName 
     Wscript.Echo "Volume size: " & objReport.VolumeSize  
     If blnRecommended = True Then 
      Wscript.Echo "This volume should be defragged." 
     Else 
      Wscript.Echo "This volume does not need to be defragged." 
     End If 
     Wscript.Echo 
    Else 
     MsgBox errResult 
    End If 
Next 

두 개의 다른 Win7 시스템에서이 스크립트를 실행하려고했습니다.

처음에는 GetObject("winmgmts:").ExecQuery("Select * from Win32_Volume")OUT OF MEMORY 오류가 발생합니다.

두 번째로 GetObjectOUT OF MEMORY 오류가 표시되지 않지만 error 11 (Unknown Error) in errResult (output of DefragAnalysis-method)이 표시됩니다.

두 가지 Win7 시스템이 동일한 방식으로 설치 및 구성되었습니다.

아마도이 것은 중요하지 않지만 WMI 속성을 확인할 때 "Connected to <Local Computer>"이 아니라 (Win XP의 경우) "SUCCESSFULLY connected to <Local Computer>"이라고 표시됩니다.

답변

0

코드는 나를 위해 잘 작동하지만, 아마도 당신은 명시 적으로 올바른 네임 스페이스에 연결할 때이 도움이됩니다 :

는 또한
Set wmi = GetObject("winmgmts://./root/cimv2") 
Set VolumeList = wmi.ExecQuery("SELECT * FROM Win32_Volume") 

내가 쿼리를 제한하는 것이 좋습니다 거라고 드라이브 문자가 그냥 로컬 디스크 자신에게 할당 : 사용자의 WMI 연결이 전혀 작동하는지

SELECT * FROM Win32_Volume WHERE DriveType = 3 AND DriveLetter IS NOT NULL 

사용 WBEMTest 또는 WMIDiag 확인합니다. 응용 프로그램 오류 및 경고에 대해서도 시스템 로그를 확인하십시오.

+0

빠른 응답 감사합니다. 나는 이것을 확인하기 위해 내일까지 기다려야한다. 그러나 나는 당신에게 앙갚음을 할 것이다. 감사 – user1985245

0

오류 11의 원인은 스크립트가 높은 권한으로 실행되지 않았기 때문입니다. 일단 관리자 권한으로 실행되면 정상적으로 작동합니다. 감사합니다.

관련 문제