usar - Asignar una unidad de red y verificar su existencia en VBScript
vbscript ejemplos (2)
Creé una subrutina para mapear unidades ...
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
Dejo que maneje la comprobación de errores, etc. Alternativamente, si prefiere la ruta de uso de red, podría hacer algo como ...
dim wshShell
Set wshShell = CreateObject("WScript.Shell")
wshshell.run "cmd /c net use H: ""//server/share""",1,True
Puede dar un paso más para utilizar automágicamente la siguiente letra de unidad disponible para asignar unidades usando un ejemplo creado por 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.”
Espero que esto sea útil.
Necesito asignar una unidad de red a una ruta de red usando VBScript. La ruta de la red se lee directamente desde la entrada. ¿Cómo debo mapear la unidad de red y cómo verificar si la ruta de red ingresada ya existe?