Solved

VBScript to map drives based on domain name

Posted on 2008-10-29
10
513 Views
Last Modified: 2012-06-22
I need a VBScript that will map 6 drives based on the domain name assigned by DHCP. I have 3 locations, 2 of them being child domains of the parent domain.
0
Comment
Question by:FIFBA
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
  • 2
10 Comments
 
LVL 65

Assisted Solution

by:RobSampson
RobSampson earned 100 total points
ID: 22835427
Hi, what about something like this...

Regards,

Rob.
Set objNetwork = CreateObject("WScript.Network")
strDomain = UCase(objNetwork.UserDomain)
Select Case strDomain
	Case UCase("SUB1.DOMAIN.COM")
		objNetwork.MapNetworkDrive "G:", "\\server\gshare"
	Case UCase("SUB2.DOMAIN.COM")
		objNetwork.MapNetworkDrive "H:", "\\server\hshare"
	Case UCase("DOMAIN.COM")
		objNetwork.MapNetworkDrive "I:", "\\server\ishare"
End Select

Open in new window

0
 

Author Comment

by:FIFBA
ID: 22835562
How can I test this without mapping drives? i.e. display the result of the domain name query. Thanks.
0
 
LVL 14

Expert Comment

by:rejoinder
ID: 22835891
For seeing the domain name, use this smaller script but remember you would need to run this once in each domain to see the actual results.
Set objNetwork = CreateObject("WScript.Network")
wscript.echo = UCase(objNetwork.UserDomain)

Open in new window

0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 14

Expert Comment

by:rejoinder
ID: 22835896
Opps, please take out the "=" in line 2... it should read;
wscript.echo UCase(objNetwork.UserDomain)
0
 

Author Comment

by:FIFBA
ID: 22845127
I'm not quite getting the results I expected. Maybe I need to be more clear about what I'm trying to do...

I need to determine what domain name is being handed out by the dhcp server. When a user goes to different locations, I need to map drives based on the dns suffix. So even though the PC may be a member of xyz.local, I need to map drives for the domain abc.xyz.local, which would be handed out as the dns suffix by the dhcp server at abc.xyz.local.

When I run the query, I get the domain that the PC is a member of for the results, regardless of the dns suffix handed out via DHCP.

Thanks for the help so far.
0
 
LVL 14

Expert Comment

by:rejoinder
ID: 22845814
Here is a short sample that will tell you the DHCP server IP address and the DNSDomain name.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
 
For Each IPConfig in IPConfigSet
    if IPConfig.DHCPServer <> "" then
        wscript.echo "DHCP Server:" & vbTab & IPConfig.DHCPServer & vbCRLF &_
                     "DNS Domain:" & vbTab & IPConfig.DNSDomain
    end if
Next
 
wscript.echo "Done."

Open in new window

0
 
LVL 65

Expert Comment

by:RobSampson
ID: 22845940
Alternatively, does this give you the correct DNS Suffix?

Rob.
Set objShell = CreateObject("WScript.Shell")
strDNSDomain = UCase(objShell.ExpandEnvironmentStrings("%USERDNSDOMAIN%"))
WScript.Echo strDNSDomain

Open in new window

0
 

Author Comment

by:FIFBA
ID: 22846272
Getting closer...

When I run the first script, here's what I get...

DHCP SERVER: 192.168.200.1
DNS Domain: <empty>

then I click OK and I get

DHCP Server 192.168.1.1 (good)
DNS Domain: domain.local (good)

click OK again and get a 'done'.

So, really all I need to make this work is the DNS domain (above, domain.local is what I'm looking for).

0
 
LVL 14

Accepted Solution

by:
rejoinder earned 400 total points
ID: 22846535
This script uses the above but separates out the domain names so you can do your dive mapping etc based on the domain criteria.  Enter the various domain names as;
Case your.domain.name 
Follow this with the appropriate login script.
There might be some undesirable results with this technique.  If your client has multiple network cards (WiFi and wired), one of the network cards might retain the information from the other domain.  This would not confuse the script, it would simply loop through the cards and map accordingly where the last network card found would map drives taking precedence.
There might be other options worth trying such as adding login scripts through AD Sites and Services.  Each site you have set up will probably correspond to a particular domain.  Setting a GPO at this level to run login scripts might satisfy your needs.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
 
For Each IPConfig in IPConfigSet
    select case IPConfig.DNSDomain
        case "Domain1"
            wscript.echo "You are in Domain1 and this is your login script..."
        case "Domain2"
            wscript.echo "You are in Domain2 and this is your login script..."
        case "Domain3"
            wscript.echo "You are in Domain3 and this is your login script..."
    end select
Next
 
wscript.echo "Done."

Open in new window

0
 

Author Comment

by:FIFBA
ID: 22850660
Thanks for all the help. I think this will work. I've considered scripting based on site as you suggested but there are a couple things I would need to work out that I did not mention in my initial question. Your last script should get me most of the way there, though. Thanks again.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This script will sweep a range of IP addresses (class c only, 255.255.255.0) and report to a log the version of office installed. What it does: 1.)      Creates log file in the directory the script is run from (if it doesn't already exist) 2.)      Sweep…
When you see single cell contains number and text, and you have to get any date out of it seems like cracking our heads.
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
Do you want to know how to make a graph with Microsoft Access? First, create a query with the data for the chart. Then make a blank form and add a chart control. This video also shows how to change what data is displayed on the graph as well as form…

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question