我需要使用 VBScript 将网络驱动器映射到网络路径。网络路径直接从输入中读取。应该如何映射网络驱动器以及如何检查输入的网络路径是否已经存在?

请您参考如下方法:

我创建了一个子程序来映射驱动器...

    MapDrive "H:","\\server\share" 
 
    Sub MapDrive(letter, uncpath) 
         on error Resume Next 
         dim drivetype, currentmapping 
 
        dim objWMIService  
        dim colDisks, objDisk 
 
        'Set wshnetwork = CreateObject("Wscript.Network") 
        Set objWMIService = GetObject("winmgmts:" & _ 
             "{impersonationLevel=impersonate}!\\.\root\cimv2") 
        Set colDisks = objWMIService.ExecQuery _ 
            ("Select * from Win32_LogicalDisk Where Name = """ & letter & """") 
        For Each objDisk In colDisks         
             drivetype = objDisk.DriveType       
            currentmapping = objDisk.ProviderName 
        Next     
 
 
        if (drivetype <> 4 and drivetype <> 0) then 
            NotifyUser ucase(letter) & " cannot be mapped due to a physical device already reserving that drive letter" & vbcrlf & _ 
                        "This is most frequently caused by a thumbdrive or external disk.",5 
            exit Function 
        end if 
 
        if (ucase(currentmapping) = ucase(uncpath)) then 
            exit function 
        end If 
 
        if (drivemappings.Exists(uncpath)) then 
            drivemappings.Add uncpath & "(" & letter & ")", letter 
        else  
            drivemappings.Add uncpath, letter 
        end if 
 
        if (currentmapping <> "") then 
                wshnetwork.RemoveNetworkDrive letter,,True 
        end if 
 
        wshnetwork.MapNetworkDrive letter, uncpath, true 
 
        on Error goto 0 
     End Sub 

我把它留给你来处理错误检查等。或者,如果你更喜欢 net use 路由,你可以做类似的事情..

dim wshShell 
Set wshShell = CreateObject("WScript.Shell") 
wshshell.run "cmd /c net use H: ""\\server\share""",1,True 

您可以更进一步,使用示例自动使用下一个可用的驱动器号来映射驱动器 The Scripting Guys已创建。

Set objDictionary = CreateObject("Scripting.Dictionary") 
 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
 
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk") 
 
For Each objDisk in colDisks 
    objDictionary.Add objDisk.DeviceID, objDisk.DeviceID 
Next 
 
For i = 67 to 90 
    strDrive = Chr(i) & ":" 
    If objDictionary.Exists(strDrive) Then 
    Else 
        Wscript.Echo strDrive & " is the next available drive letter." 
        Wscript.Quit 
    End If 
Next 
Wscript.Echo "There are no available drive letters on this computer.” 

希望对您有所帮助。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!