基本上,我收到了一个VBScript,它从当前登录的用户收集用户名,然后将其\\MYSERVER\Users\<username>
映射到一个driveletter(J:
)。我遇到的问题是让这个永久性,在重启/注销后留在那里。这是我正在使用的代码:
Option Explicit
Dim objNetwork
Dim strDriveLetter, strRemotePath, strUserName
strDriveLetter = "J:"
strRemotePath = "\\MYSERVER\Users"
Set objNetwork = WScript.CreateObject("WScript.Network")
strUserName = objNetwork.UserName
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath _
& "\" & strUserName
WScript.Echo " Launch Explorer, check: "& strDriveLetter
WScript.Quit
答案 0 :(得分:1)
MapNetworkDrive Method:将共享网络驱动器添加到您的计算机系统。
object.MapNetworkDrive(sLocalName, sRemoteName, [bUpdateProfile], [sUser], [sPassword])
参数
object
WshNetwork对象。sLocalName
字符串值,指示在本地知道映射驱动器的名称。sRemoteName
字符串值,表示共享的UNC名称(\\xxx\yyy
)。bUpdateProfile
可选。布尔值,指示映射信息是否存储在当前用户的配置文件中。如果 提供了bUpdateProfile,其值为true
,映射为 存储在用户配置文件中(默认为false
)。sUser
可选。表示用户名的字符串值。如果要使用网络驱动器映射网络驱动器,则必须提供此参数 当前用户以外的其他人的凭据。sPassword
可选。表示用户密码的字符串值。如果要使用网络驱动器映射网络驱动器,则必须提供此参数 当前用户以外的其他人的凭据。
然而,使用
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath & "\" & strUserName, True
可能会引发一些错误,例如
-2147024811
本地设备名称已在使用中(&H80070055
)或-2147023694
本地设备名称与另一个网络资源(&H800704B2
)有记忆连接。请注意,下一个代码片段用于检查映射驱动器并有条件地删除当前驱动器映射(如果存在)可能会失败
On Error GoTo 0
Dim oDrives, i
Set oDrives = objNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
If oDrives.Item( i) = strDriveLetter Then
' remove current drive mapping, force the removal, force persistent
objNetwork.RemoveNetworkDrive strDriveLetter, True, True
' and wait for network drive removal (this could take some time)
Wscript.Sleep 800
Exit For
End If
Next
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath & "\" & strUserName, True
如果待处理(仍记住但未使用EnumNetworkDrives
进行枚举)暂时断开驱动器映射,例如按objNetwork.RemoveNetworkDrive strDriveLetter, True, False
因此,涉及一些基本错误处理如下:
On Error Resume Next
' remove current drive mapping, force the removal, force persistent
objNetwork.RemoveNetworkDrive strDriveLetter, True, True
' and wait for network drive removal (this could take some time)
Wscript.Sleep 800
Err.Clear
' map network drive, force persistent
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath & "\" & strUserName, True
On Error GoTo 0
答案 1 :(得分:0)
如有疑问,请阅读documentation:
语法
object.MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword])
参数
[...]
bUpdateProfile
可选的。布尔值,指示映射信息是否存储在当前用户的配置文件中。如果提供了 bUpdateProfile 并且其值为 true ,则映射将存储在用户配置文件中(默认为 false )。
所以你需要改变这个:
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath _
& "\" & strUserName
进入这个:
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath _
& "\" & strUserName, True