Server 2003 Domain, Windows 7 & vbs Login Script

I have a Windows Server 2003 AD domain with 500+ XP clients.  We have a comprehensive login  script (written in vbs) that is launched by default domain policy and, as part of its role, maps printers according to the location of the client pc / laptop and the group membership of the user.  We are about to introduce a suite of 30 Windows 7 desktops but I note elsewhere that these can have problems with vbs logon scripts.  Please can someone advise on how to ensure that we can continue to run the login across all client pcs - XPPro & W7Pro.  Thanks.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

I don't know what classes or functions work with Windows 7 but I know that it's prepared to work with Powershell and it don't have 100% compatibility with vbs files. The best way to ensure that it will work is to test your script with one computer with windows 7.

Hope this helps.
Nenad RajsicCommented:
The only way to test which vb functions from your login script work on windows 7 is to test it on one of your windows 7 machines. When you log in see if your printers are mapped correctly, mapped network drives etc. then if you see that one if one of your steps is not working search for a VBS code that will work on win 7 only for that particular function.
Ivano ViolaSystem AdministratorCommented:
We have a Server 2003 Domain and use one vbs login script to map drives based on AD groups (no printer mappings) for both operating systems. Currently we have not experienced any problems mapping drives. We do call the script using a batch file only because we have some KiXtart scripts that also run during the logon process. UAC is still activated on the Win7 machines. All users are local admins on their machines.

If you have any problems let me know. I don't mind sharing the script we use.
10 Tips to Protect Your Business from Ransomware

Did you know that ransomware is the most widespread, destructive malware in the world today? It accounts for 39% of all security breaches, with ransomware gangsters projected to make $11.5B in profits from online extortion by 2019.

Another way would be to quit scripting here and use GPOs from now on. So called "Group policy preferences" henceforth GPPs (see MS kb943729) can be used for your task even on xp (with kb 943729 installed). To use GPPs, take a windows 7 pc and install RSAT, next, activate it as a windows feature and connect to your 2003 DC through it. GPPs have many advantages and are highly recommended.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
cmdownAuthor Commented:
Thanks All for your responses so far.  Ivanoviola and McKnife I feel are closest to where we are with this.  Our script sets printers, mappings and desktop properties and captures details such as machine name, ip address etc & writes to several log files.  As this deployment is within a large upper school environment making all users local machine admins is not an option.  Also, only 30 out of 580 computers will be W7Pro (at this time) so we really need a quick fix to get this working again without detracting from the functionality of the login script for the XPPro users.
There are only a few assumptions we can make so far about what is going wrong. As I read many postings here and there about problems with .vbs logon scripts and never about problems with .bat logon script on windows 7, I am tempted to advise you to use .bat for the tasks that .bat can handle (which should be most or all).
Please also read the last 3 postings of
Ivano ViolaSystem AdministratorCommented:
Find attached the vb script I use. It logs results/user info along with other info. The only thing we needed to change when we introduced Windows 7 machines was the log file path.
We use a batch file to call this. Hope this helps.

cmdownAuthor Commented:
Hi both
We've confirmed that vbs is now actually running (WSH reinstall required) but some of the low level calls that query the AD are causing the scripts to fail.
I've uploaded a function from the main logon script, which is failing at line 25 (Set adoRecordset = objCommand.Execute) when it queries AD to get the location field from the computer record.  Any ideas ?  

Function GetObjectLocation
	strUser = "MYDOMAIN\Addcomputer"
	strPassword = "Password"
	strserver = "DomCtrl"
	strloc = "BLANK"
	'= Obtain Root DSE
	Set objRootDSE = objNS.OpenDSObject("LDAP://" & strserver & "/RootDSE", strUser, strPassword, ADS_SECURE_AUTHENTICATION)
	strDNSDomain = objRootDSE.Get("defaultNamingContext")
	'= Obtain Domain from RootDSE
	strdomain = strDNSDomain
	Set objCommand = CreateObject("ADODB.Command")
	Set adoConnection = CreateObject("ADODB.Connection")
	adoConnection.Provider = "ADsDSOObject"
	adoConnection.Open "Active Directory Provider"
	objCommand.ActiveConnection = adoConnection
	strBase = "<LDAP://" & strDNSDomain & ">"
	strFilter = "(&(objectCategory=computer)(name=" & strcomputername & "))"
	strAttributes = "adspath,description"
	strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
	' Run the query.
	objCommand.CommandText = strQuery
	objCommand.Properties("Page Size") = 100
	objCommand.Properties("Timeout") = 30
	objCommand.Properties("Cache Results") = False
	Set adoRecordset = objCommand.Execute
	' Enumerate the resulting recordset.
	Do Until adoRecordset.EOF
		locatecomputer = TRUE
		strorigcomputerpath = adorecordset.Fields("AdsPath").Value
		strdescription = adorecordset.Fields("description").Value
	' Clean up.
	strPath = strorigcomputerpath
	Set objcomputer = objNS.OpenDSObject(strPath,strUser, strPassword,ADS_SERVER_BIND Or ADS_SECURE_AUTHENTICATION)
	on error resume next
	strloc = objComputer.Get("Location")	
	GetObjectLocation = UCASE(strloc)
End Function

Open in new window

cmdownAuthor Commented:
Points increased to 350
cmdownAuthor Commented:
This problem has been resolved, although the reason is unclear.  Seperate to this posted problem we had to make a minor & unrelated change to the vbscript to allow for some additional functionality. As part of this, the sub and function calling sequence within the script changed and the problem just disappeared.  Weird !
Points awarded to ivanoviola & McKnife for assistance
cmdownAuthor Commented:
Thanks for all your help.  Readers of this post please see my above comment on what resolved the issue.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
VB Script

From novice to tech pro — start learning today.