Introduction to Windows Logon Scripts - On Error Resume Next
Our goal is to create defensive code that protects the user against the most common logon script problems.
Let us start with a simple strategy. We are going to tell the script not to give up, but to ignore the error and carry on with the next instruction. The VBScript command to achieve our goal is
: On Error Resume Next. Topics for On Error Resume
Next
When people first discover On Error Resume Next, the temptation is to use it all the time in their
Windows logon scripts. So, the second lesson is to use On Error Resume Next only sparingly. For example, you positively need to know if you forgot to declare a variable. Therefore, don't
use On Error Resume Next in the header section, and just turn it on for sections of code which benefit from ignoring errors. When you have finished return to normal error reporting with On Error Goto 0. Just to be clear, goto is all one word and that's a zero not an oh.
To test On Error Resume Next, I have an example where a
Windows logon script seeks to map not one, but two Network Drives. If, for any reason the script fails to map the first drive, we want to say, forget that error and try and map the second drive.
Mapping one drive is better than none, and certainly better than an error message interrupting the user.
Pre-requisites - On Line 14 change the server name from '\\BigServer' to your server name.
- Make sure that your server has a share called '\drivers'. Alternatively, edit the sharename in the script, and type in the name of your UNC path.
Instructions for multiple Mapped Network Drives
- Copy and paste the script below into notepad or get a script editor such as OnScript (free download).
- Did you edit the server name from "\\BigServer to the name of your server?
- Make sure that you have a network share called drivers on your server.
- Crucially, leave in the deliberate mistake \\nowhere\nochance
- Save the file with a .vbs extension e.g. MapTwoDrives.vbs.
- Double click the VBScript file and expect to see a Windows Script Host error message box.
- To get rid of the message box and to
actually map the second drive, uncomment line 17: On Error Resume Next.
' MapTwoDrives.vbs - Map Network Drive to M: and P: ' VBScript to Demonstrate On Error Resume Next ' ------- N.B. remove the comments on line 17 --------- ' Author Guy Thomas
http://computerperformance.co.uk/ ' Version 1.2 - April 24th 2005 ' --------------------------------------------------------' Option Explicit Dim objNetwork, objShell, strRemotePath1,
strRemotePath2 Dim strDriveLetter1, strDriveLetter2, strDriveExplore
strDriveLetter1 = "M:" strDriveLetter2 = "P:" strRemotePath1 = "\\nowhere\nochance" strRemotePath2 = "\\BigServer\drivers"
' Remove comment ' on next line ' On Error Resume Next
Set objNetwork = CreateObject("WScript.Network") ' Section which maps two drives, M: and P: objNetwork.MapNetworkDrive
strDriveLetter1, strRemotePath1
objNetwork.MapNetworkDrive strDriveLetter2, strRemotePath2
Wscript.Quit
' End of Script
Note 1: The point of this script is to run it first with, and then without, On Error Resume Next. To compare these two effects, uncomment line 17.
Note 2: The secret of using On Error Resume Next is to place it as near as possible to the problem section, and certainly after you have declared your variables.
Note 3: There are a surprising number of traps when mapping multiple drives. The central point is that each new drive letter has its own line. objNetwork.MapNetworkDrive
strDriveLetter2, strRemotePath2.
Note 4: From a scripting point of view, all you need is one object. It is not necessary to Set objNetwork1, objNetwork2 for each drive, just recycle the one variable - objNetwork.
What can you do to prevent 800xxxxx error messages assaulting your scripts? The answer is to defend with error correcting code. At its best, error correcting code can
build in logic. For example, suppose a logon script fails because the drive letter is already in use. How can you defend against this error? Well if it's a Network Drive then you could
disconnect,
or else try another letter. A major part of writing error correcting code is anticipating what could wrong with the script. Once you realize the outcome, then visualize the
manual steps you would take to get the task back on track. Finally write the code to mimic those manual steps.
On Error Resume Next is a wonderful addition to your Window logon script toolkit. Add this command when ever your want to ignore a 800xxxxx error and carry on processing the rest of your script.
See Also● Logon Script Home ●
Multiple Mapped network Drives |