2013-06-24 4 views
1

Я пытаюсь выполнить следующий скрипт на Win7 (x64), чтобы проверить, нужно ли дефрагментировать любые тома.Получение ошибок при проверке состояния фреймации

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.

Во-первых, я получаю ошибку OUT OF MEMORY на GetObject("winmgmts:").ExecQuery("Select * from Win32_Volume").

На второй, я не получаю OUT OF MEMORY Ошибка на GetObject, но я получаю 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") 

Кроме того, я бы рекомендовал, ограничивающее запрос на только локальные диски, которые имеют букву диска возложенных на них:

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

Использование WBEMTest или WMIDiag, чтобы проверить, если подключение к WMI работает на всех. Проверьте Приложение и Система журналы событий для ошибок и предупреждений.

+0

Благодарим за быстрый отклик. Я должен подождать до завтра, чтобы проверить это, но я вернусь к вам. благодаря – user1985245

0

Причиной ошибки 11 было то, что сценарий не запускался с повышенными привилегиями. Как только он запускался как администратор, он работал нормально. Спасибо