HTA Automatically Creates Mappings

Downloads
101816.zip

In the Reader to Reader article "How to Determine the Next Available Drive Letter When Z Is Already Mapped", Simon Zeltser provides a very handy script that determines and maps the next available drive to a network share of your choosing. Because the underlying engine is so useful, I incorporated its functionality in an HTML Application (HTA). By converting Simon's script into an HTA and by taking advantage of some optional arguments of the MapNetworkDrive method of the Windows Script Host's (WSH's) WshNetwork object, I was able to create a more flexible tool.

In his script, Simon used the MapNetworkDrive method of Windows Script Host's (WSH's) WshNetwork object to map a drive to a network share. When he called the MapNetworkDrive method, he used the method's two required arguments, which are the drive letter and the network share's path. The MapNetworkDrive method also has three optional arguments. One optional argument lets you specify whether you want to make the mapping persistent by storing it in the current user's profile. The other two optional arguments let you specify a user ID and password if you want to map a drive under alternate credentials.

For example, suppose you want to use alternate credentials to map the B drive to a shared folder named Tools on the UtilServer server and you want the mapping to persist. You could use code such as

Set drive = _
  WScript.CreateObject("WScript.Network")
drive.MapNetworkDrive B:, _
  \\UtilServer\tools, True _
  DomainName\ImaUser, MyP@$$w0rd

In this code, the True argument specifies that you want a persistent mapping, DomainName\ImaUser represents the alternate user ID, and MyP@$$w0rd is the password for that user.

After adapting Simon's code so I could create persistent mappings and use alternative credentials when needed, I incorporated it into the HTA. (The rest of Simon's code is virtually untouched, except for some error-checking code that I added.) You can download this HTA by clicking the Download the Code Here button at the top of the page. You don't need to customize the HTA at all before using it.

As Figure 1 shows, the HTA's GUI is straightforward and easy to use. If you want to use the credentials with which you logged on to create a nonpersistent mapping, you just enter the path to the network share in the format \\server\share in the top input field and click the MapIt button.

Figure 1: The HTA's GUI

To make the mapping persistent, simply select Yes in the Persistent drop-down box. When you make a mapping persistent, the network share will be mapped when you log on again, providing you have access and network connectivity to that share.

To create a mapping under alternate credentials, you need to enter the user ID and password of the alternate account. You must precede the username with either the domain or the server where the account resides. An example of this would be MyDomain\AltUserID.

As I mentioned previously, I made only a few changes to Simon's original code. Basically all I've done to enhance it is to allow the various MapNetworkDrive method arguments to be supplied through the HTA's GUI, which eliminated the need to hard-code arguments in the script and made for an application that's more flexible. My thanks and acknowledgement to Simon for his very useful code.

Please or Register to post comments.

IT/Dev Connections

Las Vegas
September 30th - October 4th

Paul ThurottYou'll have the opportunity to experience:
• The Microsoft
Technology Roadmap
• Office 365 Implementation
• Hyper-V Optimizing
• Windows 8 Deployment
and much more!

Come See Paul Thurrott & Rod Trent in Person!

Early Registration Now Open

Upcoming Training

Mastering System Center 2012

During over 6 hours of training you can join John Savill from your computer as he will walk you through the key components and capabilities of System Center 2012, what’s involved in using the components, and the benefit they can bring to your environment.

Register Now

Current Issue

May 2013 - The NameTranslate object is useful when you need to translate Active Directory object names between different formats, but it's awkward to use from PowerShell. Here's a PowerShell script that eliminates the awkwardness.

CURRENT ISSUE / ARCHIVE / SUBSCRIBE

Windows Forums

Get answers to questions, share tips, and engage with the Windows Community in our Forums.