Script to connect & disconnect mapped drive


Recommended Posts

  sam_goffe said:

net use [DRIVE]: \\[PATH]\

net use [DRIVE]: \\[PATH]\ /DELETE

just put them in a batch file.

thanks... this is a start. however, since users tend to forget, I want it to remove after they are done with the directory. I figured the best way would be when they log off. can this be done?

Can't see the need to disconnect at log off.

' ########################################################################
'  Written in VBScript.
'  Establishes map drives.
'  Assign to OU Group Policy under USER CONFIG, WINDOWS SETTINGS, SCRIPTS, LOGON SCRIPT.
'
'  This script will: 
'  (1) check if the drive is already connected and, if so, disconnect it.
'  (2) map the drive.
'
'  Arguments are as follows: 
'	 MAPIT  DRIVE-LETTER as string,  PATH as string, USER as string, PASSWORD as string
'	 (1) Do not specify colon in drive letter.
'	 (2) Do not end path with a forward slash.
'	 (3) If user and password are not required to establish map, then specify a zero-length string as follows:  ""
'
' Reference Microsoft info at:
' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthmapnetworkdrive.asp
' ########################################################################

' Create the Shell or environment for the commands:
Set WshShell = WScript.CreateObject("WScript.Shell")
' Define objects:
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oDrives = WshNetwork.EnumNetworkDrives()

' ====================================
' DEFINE WHO TO CONTACT for pop-up messages:
' ====================================
strContactMessage = "If you require assistance, please contact IT Support."

' ==================
' DEFINE DRIVES TO MAP:
' ==================
Mapit "m", "\\server1\share1", "", ""
Mapit "n", "\\server1\share2", "", ""

' ========
' CLEAN UP:
' ========
Set WshShell = Nothing
Set WshNetwork = Nothing
Set oDrives = Nothing

' ##################################
' DO NOT MODIFY ANYTHING BELOW THIS POINT...
'   unless you are familiar with the proper settings.
' ##################################
Sub Mapit(strLetter, strPath, strUser, strPass)

	' Define the DriveLetter:
	DriveLetter = strLetter & ":"

	' Define the remote path:
	RemotePath = strPath

	' Pop-up Notices (set to False to disable notices, otherwise set to True):
	bPopReminder = True

	' Define known errors to trap:
	Dim arrErrCode(1)
	Dim arrErrDesc(1)
	arrErrCode(0) = -2147023694
	arrErrCode(1) = -2147024811
	arrErrDesc(0) = "Unable to map drive " & DriveLetter & " to " & RemotePath _
		& " due to a previously defined remembered map with the same letter." _
		& vbCrLf & vbCrLf & "Please MANUALLY disconnect map drive " & DriveLetter _
		& ", then Log Out and Log back in."
	arrErrDesc(1) = "Unable to map drive " & DriveLetter & " to " & RemotePath _
		& " since " & DriveLetter & ": was previously reserved by your computer." _
		& vbCrLf & vbCrLf & "(Refer to Management, Shared Folders, Shares)"

	' Define whether the map information should be removed from the current user's profile:
	bForceRemoveFromProfile = True
	bRemoveFromProfile = True

	' Define whether the map information should be stored in the current user's profile:
	bStoreInProfile = False

	' Check if already connected:
	AlreadyConnected = False
	For i = 0 To oDrives.Count - 1 Step 2
		If LCase(oDrives.Item(i)) = LCase(DriveLetter) Then AlreadyConnected = True
	Next

	' Attempt to map the drive.  If already mapped, first attempt disconnect:
	If AlreadyConnected = True then
		WshNetwork.RemoveNetworkDrive DriveLetter, bForceRemoveFromProfile, bRemoveFromProfile
		If Not strUser = "" Then
			WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile, strUser, strPass
		Else
			WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile
		End If
'		If bPopReminder Then WshShell.PopUp "Drive " & DriveLetter & " disconnected, then connected successfully to " & RemotePath
	Else
		On Error Resume Next
		If Not strUser = "" Then
			WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile, strUser, strPass 
		Else
			WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile
		End If
		If Err.Number <> 0 Then
			bKnownError = False
			For I = LBound(arrErrCode) To UBound(arrErrCode)
				If Err.Number = arrErrCode(I) Then
					bKnownError = True
					strPopMessage = arrErrDesc(I)
					' Display the Disconnect Network Drives window:
					If Err.Number = arrErrCode(0) Then
						Set objWSH = Wscript.CreateObject("WScript.Shell")
						objWSH.Run "rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL Disconnect", 1, true
					End If
					Exit For
				End If
			Next
			If Not bKnownError Then
				strPopMessage = "Unable to map drive " & DriveLetter & " to " & RemotePath _
					& " due to reason stated below."
			End If
			' Display warning message:
			strPopMessage = "WARNING!!   WARNING!!   WARNING!!   WARNING!!" _
				& vbCrLf & vbCrLf & strPopMessage _
				& vbCrLf & vbCrLf & Err.Description & " (error " & Err.Number & ")" _
				& vbCrLf & vbCrLf & strContactMessage
			WshShell.PopUp strPopMessage
		Else
'			If bPopReminder Then WshShell.PopUp "Drive " & DriveLetter & " connected successfully to " & RemotePath
		End If
	End If

' ====================================
' Rename those mapped drive.
' Why have "Share1 on server1" when you can have "Share 1"
' ====================================

mDrive = "M:\"
Set oShell = CreateObject("Shell.Application")
oShell.NameSpace(mDrive).Self.Name = "Share 1"

mDrive = "N:\"
Set oShell = CreateObject("Shell.Application")
oShell.NameSpace(mDrive).Self.Name = "Share 2"

	' Release resources:
	Set objWSH = Nothing

	' Slight pause to ensure each pass has time to commit:
	wscript.sleep 200
End Sub

  Quote
' ====================================

' Rename those mapped drive.

' Why have "Share1 on server1" when you can have "Share 1"

' ====================================

mDrive = "M:\"

Set oShell = CreateObject("Shell.Application")

oShell.NameSpace(mDrive).Self.Name = "Share 1"

mDrive = "N:\"

Set oShell = CreateObject("Shell.Application")

oShell.NameSpace(mDrive).Self.Name = "Share 2"

' Release resources:

Set objWSH = Nothing

' Slight pause to ensure each pass has time to commit:

wscript.sleep 200

End Sub

Didn't know that was possible. Nice tip, thanks.

instead of specifying a drive letter you can use the symbol * instead, this means the mapped drive will use the next available drive letter..

usefull if some users have usb pens etc plugged in that are taking up the drive letter specified in the script

(although thats less likely if you specify something like Z: )

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • LibreOffice narrows gap with Microsoft Office in 25.8 Beta 1 by David Uzondu The Document Foundation has released LibreOffice 25.8 Beta 1 for public testing on Linux, macOS, and Windows. This is the second pre-release for the 25.8 cycle and the foundation says that the final, stable version of LibreOffice 25.8 is expected to land at the end of August 2025. Starting off with Writer, LibreOffice's Word, the developers have finally addressed some long-standing annoyances, including a new command to easily insert a paragraph break right before a table. This beta also introduces a useful privacy feature in its Auto-Redact tool, letting you strip all images from a document with a single option. To use it, go to Tools and select the Auto-Redact option: The application has improved its ability to handle different languages for punctuation, preventing mix-ups in multilingual documents. Other notable improvements have also been made. A new hyphenation rule lets you choose to prevent a word from splitting at the end of a page, moving the whole line to the next page instead. Microsoft Word has had this feature for years now. The Navigator now displays a handy tooltip with word and character counts for headings and their sub-outlines. Scrolling behavior when selecting text has been improved, making it less erratic. A new command with a keyboard shortcut was added for converting fields into plain text. Calc gets a lot of new functions that bring it closer to its competitors like Excel, including TEXTSPLIT, VSTACK, and WRAPROWS. Impress now properly supports embedded fonts in PPTX files, which should reduce headaches when sharing presentations with PowerPoint users. Alongside these additions, the project is also cleaning house; support for Windows 7, 8, and 8.1 has been completely dropped. There are also smaller UI tweaks across the suite, like allowing a single click to enter rotation mode for objects in Writer and Calc. macOS users get better integration, with proper support for native full screen mode and new window management features from the Sequoia update. In terms of performance, the team has optimized everything from loading huge DOC files and XLSX spreadsheets with tons of conditional formatting to simply switching between sheets in Calc. These improvements should be noticeable, especially when working with complex documents. A new application-wide "Viewer mode" has also been implemented, which opens all files in a read-only state for quick, safe viewing. On a related note, The Document Foundation has joined efforts by the likes of KDE to encourage Windows 10 users to switch to Linux. Also, you might have heard that Denmark, in a bid to lessen its reliance on Microsoft, has decided to make a full switch to LibreOffice, with plans to begin phasing out Office 365 in certain ministries as early as next month. If you're interested in this release, you can read the full release notes and download the binaries for your platform: Windows, macOS (Intel | Apple Silicon), or Linux (DEB | RPM). You can also get the latest stable version from our software stories page.
    • Until it can be used 100% offline (ie: PST file support or equiv) not even considering it. I'll jump to Thunderbird first which has gotten a LOT better since the last time I looked at it.
  • Recent Achievements

    • Explorer
      Case_f went up a rank
      Explorer
    • Conversation Starter
      Jamie Smith earned a badge
      Conversation Starter
    • First Post
      NeoToad777 earned a badge
      First Post
    • Week One Done
      JoeV earned a badge
      Week One Done
    • One Month Later
      VAT Services in UAE earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      545
    2. 2
      ATLien_0
      227
    3. 3
      +FloatingFatMan
      159
    4. 4
      Michael Scrip
      113
    5. 5
      +Edouard
      105
  • Tell a friend

    Love Neowin? Tell a friend!