使用Win32_MappedLogicalDisk

时间:2017-09-28 00:02:52

标签: vbscript wmi

我正在尝试创建逻辑以在本地驱动器和映射到驱动器的UNC路径上查找可用空间。

在本地驱动器上查找可用空间的逻辑运行正常。至于UNC路径映射驱动器,我已经读过Win32_LogicalDisk无法可靠地为映射驱动器执行此操作,所以一直试图让Win32_MappedLogicalDisk.caption一起工作,我已经看到了在一个示例代码中,.DeviceID(后者因为在查找前者之后它似乎是只读的)。

然而,即使在验证逻辑正在向Win32_MappedLogicalDisk.DeviceID='E:'提供objWMI.get(s)之后,我也会收到Invalid object path / 8004103A / SWbemServicesEx错误。

我不经常在示例中看到objWMI.get形式(通常是较长的GetObject("winmgmts:"......execquery种类),所以不确定是否使用了两者中的短片导致问题。

顺便说一句:如果有人可以详细说明getobject(""winmgmts:"objWMI.get...之间的差异,或者指出我要阅读有关该主题的材料,那将是大。像较短的版本,但数字可能是有限的使用。

在下面找到现在的逻辑:

TempDrive = ""

SkipSpaceCheck = false

s = wscript.scriptfullname

if left(s, 2) = "\\" then

  for i = 69 to 90

     ss = chr(i) & ":"

     if not objFSO.driveexists(ss) then

        TempDrive = ss

        exit for

     end if

  next

  if TempDrive <> "" then

     objNetwork.mapnetworkdrive TempDrive, left(s, instrrev(s, "\") - 1)

     s = "Win32_MappedLogicalDisk.DeviceID='" & TempDrive & "'"

  else

     SkipSpaceCheck = true

  end if

else

  s = objFSO.getfile(s).drive

  s = "Win32_LogicalDisk.DeviceID='" & s & "'"

end if

if not SkipSpaceCheck then

   wscript.echo s

   set objLDisk = objWMI.get(s)

   if cdbl(objLDisk.freespace) < cdbl(MinStorageSpace) then

      strConfirm = msgbox("Drive " & s & " has ONLY " & round(objLDisk.freespace / 1048576, 1) & "MB space free. Continue?", 36, "Test")

      if strConfirm = 7 then wscript.quit

    end if

   if TempDrive <> "" then objNetwork.removenetworkdrive Tempdrive

else

   wscript.echo "Space check skipped on account of no spare drive letters available to map UNC script running directory to, to obtain free space" & vbcrlf & vbcrlf & "Click OK to proceed"

end if

0 个答案:

没有答案