我正在尝试在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 :(得分:0)
Code对我来说很好,但是当你明确连接到正确的命名空间时它可能会有所帮助:
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
答案 1 :(得分:0)
错误11的原因是脚本未使用提升的权限运行。一旦它以管理员身份运行,它运行正常。感谢