【问题标题】:Getting errors when checking framentation status检查框架状态时出错
【发布时间】:2013-06-24 07:08:24
【问题描述】:

我正在尝试在 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 系统上运行这个脚本。

首先,我在GetObject("winmgmts:").ExecQuery("Select * from Win32_Volume") 上收到OUT OF MEMORY 错误。

第二次,我在GetObject 上没有收到OUT 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>"

【问题讨论】:

    标签: windows-7 vbscript wmi


    【解决方案1】:

    代码对我来说很好用,但当您明确连接到正确的命名空间时它可能会有所帮助:

     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
    

    使用WBEMTestWMIDiag 检查您的WMI 连接是否正常工作。检查 ApplicationSystem 事件日志是否有错误和警告。

    【讨论】:

    • 感谢您的快速响应。我必须等到明天才能检查出来,但我会回复你。谢谢
    【解决方案2】:

    错误 11 的原因是脚本没有以提升的权限运行。一旦它以管理员身份运行,它就可以正常工作。谢谢

    【讨论】:

      猜你喜欢
      • 2013-03-02
      • 1970-01-01
      • 2018-11-12
      • 2013-09-06
      • 2014-06-27
      • 2017-03-01
      • 2011-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多