Introduction to Map Network Drive – Five Arguments
Whilst keeping in mind our goal, which is to map a network drive, this page explains the optional arguments available to the MapNetworkDrive method. In addition to the network path and local drive letter, you can also specify the Active Directory credentials that a user needs to access the network share.
Topics for MapNetworkDrive – Five Arguments
- VBScript Background
- MapNetworkDrive 5 Arguments
- Example 1 – MapNetworkDrive with 5 Arguments
- Example 2 – MapNetworkDrive variations
- Map Network Drives PowerShell Style
- PowerShell 3.0 Logon Script
♦
VBScript Background
Microsoft designed VBScript on the classical object, method and value structure. The idea is that you create an object and then apply methods such as MapNetworkDrive. In turn, the method or verb, manipulates values.
Take as an example, assigning a drive letter to a Windows network share. The key command is MapNetworkDrive, however, it needs a network object before MapNetworkDrive can assign the drive letter to the share. In my minds eye, WSH has a whole library of objects. Our job is to persuade VBScript to release one of these objects any time the method needs to manipulate values. In VBScript, creating an object is summed up in one neat line:
Set objNetwork = CreateObject("WScript.Network")
I chose to call the object ‘objNetwork’. You can call the object what you like, but scripters like to stick to a pattern with their variables. A prefix of str indicates a string value, while an obj prefix denotes an object. Now that WScript has created objNetwork, we can start manipulating it with the method MapNetworkDrive.
MapNetworkDrive Arguments
When ever you employ a VBScript method to manipulate an object, take the time to check its arguments and syntax. When you create the network drive letter there may complications, for example permission problems. To overcome such problems, methods have optional arguments, in this case strUser and strPassword. Here is the full list of arguments for MapNetworkDrive:
objNetwork.MapNetworkDrive:
1) strDriveLetter, 2) strRemotePath, 3) bUpdateProfile, 4) strUser, 5) strPassword.
For most scripts you will only need MapNetworkDrive’s two compulsory arguments, the drive letter (1) and the network share (2). In addition, there are three optional arguments. There is a command to save the drive letter in the user’s profile. You can also add username and password arguments so that you could connect to the share with a more privileged user account. For instance, if you wish to map to a share where the ordinary users only have read access the mapping will fail, so you to map with an account which has full control of the network share. If you omitted this step then the script would fail because the user did not have sufficient permissions to complete the drive mapping.
Special note. The format for the username can be plain "Guythom" or "Administrator". If this gives trouble, try adding the domain name e.g. "cpdom\Guythom" or "cpdom\Administrator". Where cpdom is the domain name. Actually, this tip is especially useful where you are trying to map to a member server, in which case the cpdom\ prefix would be the machine name.
A little more about the third argument, which is referred to as bUpdateProfile. This optional component controls whether the new mapped network drive should be stored in the user’s profile. Incidentally it took me ages to discover what the ‘b’ in bUpdateProfile meant, the answer was Boolean, in other words this argument takes either true or false. The default is false, so the only time you need to enter a value is if you positively want the user to receive this drive every time they logon, in which case you set the bUpdateProfile value to true.
In conclusion, while there are 5 arguments, most of the time you will only need two, strDriveLetter and strRemotePath. I have to tell you that while you must use these to arguments correctly, you may name the corresponding variables what ever you like. For instance, I declare strDriveLetter for the drive letter. If you prefer, you could call this argument dLetter or LocalDrive, in your scripts. My point is learn to recognise when a method name is fixed and when a variable name is flexible. For example you cannot refer to the method MapNetworkDrive as MapEmGood, but you can call the my variable strRemotePath strRmPth if you prefer. Naturally, whether you call it strRemotePath or strRmPth, the server and sharename must exist and be correctly spelt.
Guy Recommends: A Free Trial of the Network Performance Monitor (NPM) v11.5
SolarWinds’ Orion performance monitor will help you discover what’s happening on your network. This utility will also guide you through troubleshooting; the dashboard will indicate whether the root cause is a broken link, faulty equipment or resource overload.
What I like best is the way NPM suggests solutions to network problems. Its also has the ability to monitor the health of individual VMware virtual machines. If you are interested in troubleshooting, and creating network maps, then I recommend that you try NPM now.
Download a free trial of Solarwinds’ Network Performance Monitor
Example 1 – MapNetworkDrive with 5 Arguments
Our objective is to map the H: to a share called ‘\home’ on a Windows 2003 server called ‘\\alan’. However in this example I want to show you how to employ all 5 of the MapNetworkDrive arguments, strDriveLetter, strRemotePath, strProfile, strUser and strPassword.
Pre-requisites
- On Line 15 change the server name from ‘\\alan’ to your server name.
- Make sure that the shared folder is called ‘\home’. Alternatively, alter the word ‘\home’ in the script if your share is called something else.
Instructions to MapNetworkDrive
- Copy and paste the script below into notepad or get a script editor such as OnScript (free download).
- Change the server name from "\\alan to the name of your server.
- Check the share name ‘\home’.
- Save the file with .vbs extension e.g. MNDArguments.vbs.
- Double click the resulting logon script and look in your Windows Explorer for a new drive letter: home on ‘alan’ (H:)
‘ MNDArguments.vbs
‘ VBScript to map a network drive with all 5 arguments.
‘ Author Guy Thomas https://computerperformance.co.uk/
‘ Version 1.3 – April 24th 2010
‘ ———————————————————‘
Option Explicit
Dim objNetwork
Dim strDriveLetter, strRemotePath, strUser, strPassword, strProfile
‘ Values of variables set
strDriveLetter = "H:"
strRemotePath = "\\alan\home"
strUser = "guytom"
strPassword = "P@ssw0rd1"
strProfile = "false"
‘ This section creates a network object. (objNetwork)
‘ Then apply MapNetworkDrive method. Result H: drive
‘ Note, this script features 5 arguments on lines 21/22.
Set objNetwork = WScript.CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, _
strProfile, strUser, strPassword
‘ Extra code just to add a message box
WScript.Echo " Launch Explorer, check: "& strDriveLetter
WScript.Quit
‘ End of Example script .
Learning Points
Note 1: If necessary, create a share on your own machine. I confess, that just to get the VBScript working, I often experiment on my own machine.
Note 2: If you run the script a second time, then you get WSH error message code 80070055. The solution is launch Windows Explorer, just right-click on: home on ‘alan’ (H:) and select: Disconnect. See diagram opposite. Now you can run the script again.
Note 3: If you run the script a second time you get WSH error message code 800704xx, check the name of your server.
Note 4: Where a line is too long and needs a break, use the _ (underscore) and then continue on the next line. Microsoft’s VBScript does not understand word-wrap so this is why you need underscore for statements that span two lines.
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, false, _
strUser, strPassword
Guy Recommends: SolarWinds Network Topology Mapper (NTM)
NTM will produce a neat diagram of your network topology. But that’s just the start;Network Topology Mapper can create an inventory of the hardware and software of your machines and network devices. Other neat features include dynamic update for when you add new devices to your network. I also love the ability to export the diagrams to Microsoft Visio.
Finally, Guy bets that if you test drive the Network Topology Mapper then you will find a device on your network that you had forgotten about, or someone else installed without you realizing!
Download your 14 day free trial ofSolarWinds Network Topology Mapper
Example 2 – MapNetworkDrive Variations
This script does exactly the same job as Example 1. What I want to demonstrate here is that there are a multitude of ways of scripting. By approaching the problem for a different angle you get perspective on what Microsoft’s VBScript is all about.
Notes
- This example uses lower case for strDriveLetter. X or x would work equally well.
- Instead of declaring the optional arguments in advance, I just typed them in where needed.
‘ MNDArguments2.vbs
‘ VBScript to map a network drive with all 5 arguments.
‘ Author Guy Thomas https://computerperformance.co.uk/
‘ Version 2.2 – April 24th 2010
‘ —————————————————-‘
Option Explicit
Dim objNetwork
Dim strDriveLetter, strRemotePath, strUser, strPassword, strProfile
‘ Values of variables set
strDriveLetter = "X:"
strRemotePath = "\\alan\home"
‘ This section creates a network object. (objNetwork)
‘ Then to apply the MapNetworkDrive method. Result X: drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, false, gt, pass
‘ Extra code just to add a message box
WScript.Echo " Launch Windows Explorer, check: "& strDriveLetter
WScript.Quit
‘ End of Example VBScript.
Learning Points
®