2015-05-14 3 views
0

У меня возникли проблемы с моим скриптом vbs. Он добавит только диск F, а после него не добавит драйвер G. Что я делаю не так?Как добавить подключенный сетевой диск через VBS?

'## This is for network drives 
Set objNetwork = CreateObject("WScript.Network") 
objNetwork.RemoveNetworkDrive "F:", True, True 

'## for adding 
Set objNetwork = CreateObject("WScript.Network") 
objNetwork.MapNetworkDrive "F:" , "\\myserver\share1" 
objNetwork.MapNetworkDrive "G:" , "\\myserver\share2" 

ответ

0

MapDrive.vbs

VBScript в виде буквы диска к общей сетевой папке (непостоянные).

Этот скрипт предназначен для надежности выше скорости, поэтому он будет подключаться при каждом входе в систему. Он учитывает «запоминаемые» подключения, в том числе и к файловому ресурсу, который больше не существует или находится в автономном режиме. Это хороший подход для машин, которые не всегда подключены к домену, например. Ноутбуки.

Windows XP не будет отображать «запомненное» подключение к другому серверу, если только вы не разблокируете &, не отмечая существующее соединение, это применимо, даже если старый путь подключения в настоящее время отключен.

Для каждого буквы диска есть несколько возможных состояний, что, возможно, придется иметь дело с помощью сценария: - Вспомнили (постоянное соединение)/Не Знакомые - Уже Connected/Подключенные к неправильному сетевому ресурсу/Не подключен.

Этот скрипт удалит любую существующую карту накопителей, прежде чем подключиться к правильному файловому ресурсу.

' Map a network drive 
' Usage 
' cscript MapDrive.vbs drive fileshare //NoLogo 
' cscript MapDrive.vbs H: \\MyServer\MyShare //NoLogo 
' 
' This script will remove any existing drive map to the same drive letter 
' including persistent or remembered connections (Q303209) 

Option Explicit 
Dim objNetwork, objDrives, objReg, i 
Dim strLocalDrive, strRemoteShare, strShareConnected, strMessage 
Dim bolFoundExisting, bolFoundRemembered 
Const HKCU = &H80000001 

' Check both parameters have been passed 
If WScript.Arguments.Count < 2 Then 
wscript.echo "Usage: cscript MapDrive.vbs drive fileshare //NoLogo" 
    WScript.Quit(1) 
End If 

strLocalDrive = UCase(Left(WScript.Arguments.Item(0), 2)) 
strRemoteShare = WScript.Arguments.Item(1) 
bolFoundExisting = False 

' Check parameters passed make sense 
If Right(strLocalDrive, 1) <> ":" OR Left(strRemoteShare, 2) <> "\\" Then 
wscript.echo "Usage: cscript MapDrive.vbs drive fileshare //NoLogo" 
    WScript.Quit(1) 
End If 

wscript.echo " - Mapping: " + strLocalDrive + " to " + strRemoteShare 

Set objNetwork = WScript.CreateObject("WScript.Network") 

' Loop through the network drive connections and disconnect any that match strLocalDrive 
Set objDrives = objNetwork.EnumNetworkDrives 
If objDrives.Count > 0 Then 
    For i = 0 To objDrives.Count-1 Step 2 
    If objDrives.Item(i) = strLocalDrive Then 
     strShareConnected = objDrives.Item(i+1) 
     objNetwork.RemoveNetworkDrive strLocalDrive, True, True 
     i=objDrives.Count-1 
     bolFoundExisting = True 
    End If 
    Next 
End If 

' If there's a remembered location (persistent mapping) delete the associated HKCU registry key 
If bolFoundExisting <> True Then 
    Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") 
    objReg.GetStringValue HKCU, "Network\" & Left(strLocalDrive, 1), "RemotePath", strShareConnected 
    If strShareConnected <> "" Then 
    objReg.DeleteKey HKCU, "Network\" & Left(strLocalDrive, 1) 
    Set objReg = Nothing 
    bolFoundRemembered = True 
    End If 
End If 

'Now actually do the drive map (not persistent) 
Err.Clear 
On Error Resume Next 
objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, False 

'Error traps 
If Err <> 0 Then 
    Select Case Err.Number 
    Case -2147023694 
     'Persistent connection so try a second time 
     On Error Goto 0 
     objNetwork.RemoveNetworkDrive strLocalDrive, True, True 
     objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, False 
     WScript.Echo "Second attempt to map drive " & strLocalDrive & " to " & strRemoteShare 
    Case Else 
     On Error GoTo 0 
     WScript.Echo " - ERROR: Failed to map drive " & strLocalDrive & " to " & strRemoteShare 
    End Select 
    Err.Clear 
End If 

Set objNetwork = Nothing 

От http://ss64.com/vb/syntax-mapdrive.html

0

Я сделал это раньше, как это:

dim objNet, strLocal, strPath, fso 
Set fso = WScript.CreateObject("Scripting.FileSystemObject") 
Set objNet = WScript.CreateObject("WScript.Network") 
'Name the drives and their paths 
strLocal = Array("H:","M:") 
strPath = Array("\\Full\Path\Number1", _ 
    \\Full\Path\Number2") 
'Loop to check if they are mapped, map it if they are not 
For i = LBound(strLocal) To UBound(strLocal) 
    If fso.FolderExists(strLocal(i)) = True Then 
     wscript.echo(strLocal(i) & " Mapped") 
    Else 
     objNet.MapNetworkDrive strLocal(i), strPath(i), False 
     wscript.echo(strLocal(i) & " Re-mapped") 
    End If 
Next 
'Wrap up the script 
WScript.Echo("") 
WScript.Echo("Mapping Completed") 
WScript.Sleep(2000) 
'Keep the command prompt open long enough to see that it is completed 
Set fso=Nothing 
Set objNet=Nothing 

По существу, он проверяет, если диск отображается уже, а если нет, то он будет отображать Это. Я добавил это в свою папку автозагрузки, потому что при перезагрузке я все время теряю связь с сетевыми дисками.

Смежные вопросы