Windows Vista Forums
Vista Forums Home Join Vista Forums Windows 7 Forum Vista Tutorials Tags
Welcome to Windows Vista Forums. Our forum is dedicated to helping you find solutions with any problems, errors or issues you are experiencing with Windows Vista. The Vista forum also covers news and updates and has an extensive Windows Vista tutorial section that covers a wide range of tips and tricks.

Go Back   Vista Forums > Misc Newsgroups > VB Script

Vista - Logon Script Causing Laptops To Hang - Problems in script?

Reply
 
Old 02-02-2009   #1 (permalink)
Ben


 
 

Logon Script Causing Laptops To Hang - Problems in script?

Hi,

I'm using the following script to map drives, and perform a few
functions when users logon to our domain. However, in the past 2 or 3
months it seems that when a laptop is away from the domain, logon
takes several minutes, and applications can take up to 2 minutes to
start/open. The only way around tis is to disable the wi-fi
connection, or pull the cable out of a LAN connection. However, when
back in the office, on our network, start up is perfectly fine, and
applications open in seconds.

I've been advised that this behaviour is probably due to the logon
script, somehow hunting for a domain controller to logon, waiting a
number of minutes to try and find it, then failing. The only error
messages in the event log are:

Event Type: Error
Event Source: UserInit
Event Category: None
Event ID: 1000
Date: 02/02/2009
Time: 12:51:30
User: N/A
Computer: LAPTOP1
Description:
Could not execute the following script \\server1.domain.com\NETLOGON
\logon.vbs. The network location cannot be reached.

Having watched the network traffic using Ethereal/Wireshark, I can't
see anything else that looks obviously wrong.

Could someone see if there is something in the logon script that is
wrong? Someone suggested adding a section that exits if it can't find
the logon server. However, if the event log is saying it can't find
the logon script to run, I can't see how this would help!?

Any help or suggests would be much appreciated!

Ben

logon.vbs
'*******************************************

On Error Resume Next

'*******************************************
'Initialize common scripting objects
'*******************************************
Set objNetwork = CreateObject("WScript.Network")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oShell = CreateObject("Wscript.Shell")
Set objPrinter = CreateObject("WScript.Network")
Set oSF = oShell.SpecialFolders

'*******************************************
' Define Variables and ConstantsobjUser
'*******************************************
Dim objNetwork, objFSO, objUser, objFlrGrp

strUserName = objNetwork.userName
strSvrName = "server1.domain.com"
strPtr1Name = "ptr01"
strPtr2Name = "ptr02"
strPtr3Name = "ptr03"
strPtr1Path = "\\" & strSvrName & "\" & strPtr1Name
strPtr2Path = "\\" & strSvrName & "\" & strPtr2Name
strPtr3Path = "\\" & strSvrName & "\" & strPtr3Name
strGrpDrv = "G:"
strCnsltsDrv = "J:"
strAppsDrv = "K:"
strLibrDrv = "L:"
strMarketDrv = "M:"
strInvoiceDrv = "N:"
strDictrDrv = "O:"
strAcntsDrv = "P:"
strHrDrv = "R:"
strSaleDrv = "S:"
strTrainDrv = "T:"
strAcntsShr = "\accounts"
strInvoiceShr = "\InvoiceProc"
strAppsShr = "\apps"
strCnsltsShr = "\consultants"
strDictrShr = "\directors"
strGrpShr = "\group"
strLibrShr = "\library"
strHrShr = "\hr"
strSaleShr = "\sales"
strMarketShr = "\marketing"
strTrainShr = "\training"

'*******************************************
'Disconnects Drives This assures everyone has the same drive mappings.
'*******************************************
Dim objDrive
objDrives = array
("G:","J:","K:","L:","M:","N:","P:","P:","R:","S:","T:")
For Each oDrive in objDrives
IF objFSO.DriveExists(oDrive) = True Then
objNetwork.RemoveNetworkDrive oDrive, true
End IF
Next

'*******************************************
'Audit's Laptop Software Once Every Seven Days
'*******************************************
oPath = "\\server1.domain.com\Audits\"
oComputer = oPath & objNetwork.ComputerName & "-audit.txt"
If objFSO.FileExists(oComputer) = True Then
Set ofile = objFSO.GetFile(oComputer)'get the file
fDate = ofile.DateLastModified 'file date
tdate = Now 'todays date
dDate = DateDiff("d", fdate, tdate) 'calculate the number of days
difference
if dDate > 7 then
Call Audit
else
Set ofile = Nothing
end if
else
Call Audit
End if
Function Audit
strCommand="%comspec% /c" & oPath & "psinfo.exe -s * >" & oPath &
"%ComputerName%-audit.txt"
intWindowStyle=0
oShell.Run strCommand, intWindowStyle
end Function

'*******************************************
' Map global Drives & Drives based on Group Membership
'*******************************************
'Group drive
strPath = "\\" & strSvrName & strGrpShr
objNetwork.MapNetworkDrive strGrpDrv, strPath
'Training
strPath = "\\" & strSvrName & strTrainShr
objNetwork.MapNetworkDrive strTrainDrv, strPath
'Library
strPath = "\\" & strSvrName & strLibrShr
objNetwork.MapNetworkDrive strLibrDrv, strPath

if IsMember("Accountants") then
strPath = "\\" & strSvrName & strAcntsShr
objNetwork.MapNetworkDrive strAcntsDrv, strPath
end if
if IsMember("Consultants") then
strPath = "\\" & strSvrName & strCnsltsShr
objNetwork.MapNetworkDrive strCnsltsDrv, strPath
end if
if IsMember("Admins") then
strPath = "\\" & strSvrName & strItShr
objNetwork.MapNetworkDrive strItDrv, strPath
end if
if IsMember("Directors") then
strPath = "\\" & strSvrName & strDictrShr
objNetwork.MapNetworkDrive strDictrDrv, strPath
end if
if IsMember("HumanResources") then
strPath = "\\" & strSvrName & strHrShr
objNetwork.MapNetworkDrive strHrDrv, strPath
end if
if IsMember("SalesGroup") then
strPath = "\\" & strSvrName & strSaleShr
objNetwork.MapNetworkDrive strSaleDrv, strPath
strPath = "\\" & strSvrName & strMarketShr
objNetwork.MapNetworkDrive strMarketDrv, strPath
strPath = "\\" & strSvrName & strInvoiceShr
objNetwork.MapNetworkDrive strInvoiceDrv, strPath
end if

'*******************************************
' This section sets default printers depending on location
'*******************************************
if IsMember("PTR01 Users") then
objNetwork.SetDefaultPrinter strPtr1Path
elseif IsMember("PTR02 Users") then
objNetwork.SetDefaultPrinter strPtr2Path
elseif IsMember("PTR03 Users") then
objNetwork.SetDefaultPrinter strPtr3Path
end if

'*******************************************
' This Function Gets Domain Group Membership
'*******************************************
Function IsMember(strGroup)
Dim objNetwork, objSysInfo, strUserDN, objUser

Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.userName
Set objUser = GetObject("LDAP://" & strUserDN)

Dim objGroup
If IsEmpty(objGroupList) Then
Set objGroupList = CreateObject("Scripting.Dictionary")
objGroupList.CompareMode = vbTextCompare
For Each objGroup In objUser.Groups
objGroupList(objGroup.sAMAccountName) = True
Next
End If
IsMember = objGroupList.Exists(strGroup)
End Function

Set objGroupList = Nothing

'*******************************************
'*Create Outlook signature if it doesn't exist
'*******************************************
oSigPath = "C:\Documents and Settings\" & strUserName & "\Application
Data\Microsoft\Signatures\AD Signature.rtf"
If objFSO.FileExists(oSigPath) = True Then
else
oShell.Run "\\server1.domain.com\NETLOGON\ADSignatureSetup.vbs"
End if

Set objNetwork = Nothing
Set objFSO = Nothing
Set oShell = Nothing
Set objPrinter = Nothing
Set objUser = Nothing
Set objSysInfo = Nothing
Set colProcess = Nothing
Set objWMIService = Nothing

' Exit Script
WSCript.Quit

My System SpecsSystem Spec
Old 02-02-2009   #2 (permalink)
Pegasus \(MVP\)


 
 

Re: Logon Script Causing Laptops To Hang - Problems in script?


"Ben" <bjblackmore@xxxxxx> wrote in message
news:8c7e5928-b141-4abb-b722-e32157efe408@xxxxxx
Quote:

> Hi,
>
> I'm using the following script to map drives, and perform a few
> functions when users logon to our domain. However, in the past 2 or 3
> months it seems that when a laptop is away from the domain, logon
> takes several minutes, and applications can take up to 2 minutes to
> start/open. The only way around tis is to disable the wi-fi
> connection, or pull the cable out of a LAN connection. However, when
> back in the office, on our network, start up is perfectly fine, and
> applications open in seconds.
>
> I've been advised that this behaviour is probably due to the logon
> script, somehow hunting for a domain controller to logon, waiting a
> number of minutes to try and find it, then failing. The only error
> messages in the event log are:
>
> Event Type: Error
> Event Source: UserInit
> Event Category: None
> Event ID: 1000
> Date: 02/02/2009
> Time: 12:51:30
> User: N/A
> Computer: LAPTOP1
> Description:
> Could not execute the following script \\server1.domain.com\NETLOGON
> \logon.vbs. The network location cannot be reached.
>
> Having watched the network traffic using Ethereal/Wireshark, I can't
> see anything else that looks obviously wrong.
>
> Could someone see if there is something in the logon script that is
> wrong? Someone suggested adding a section that exits if it can't find
> the logon server. However, if the event log is saying it can't find
> the logon script to run, I can't see how this would help!?
>
> Any help or suggests would be much appreciated!
>
> Ben
I would insert an instruction right at the beginning of the script to exit
if the domain controller is inaccessible.


My System SpecsSystem Spec
Old 02-02-2009   #3 (permalink)
Ben


 
 

Re: Logon Script Causing Laptops To Hang - Problems in script?

On 2 Feb, 17:01, "Pegasus \(MVP\)" <I....@xxxxxx> wrote:
Quote:

> "Ben" <bjblackm...@xxxxxx> wrote in message
>
> news:8c7e5928-b141-4abb-b722-e32157efe408@xxxxxx
>
>
>
>
>
Quote:

> > Hi,
>
Quote:

> > I'm using the following script to map drives, and perform a few
> > functions when users logon to our domain. However, in the past 2 or 3
> > months it seems that when a laptop is away from the domain, logon
> > takes several minutes, and applications can take up to 2 minutes to
> > start/open. The only way around tis is to disable the wi-fi
> > connection, or pull the cable out of a LAN connection. However, when
> > back in the office, on our network, start up is perfectly fine, and
> > applications open in seconds.
>
Quote:

> > I've been advised that this behaviour is probably due to the logon
> > script, somehow hunting for a domain controller to logon, waiting a
> > number of minutes to try and find it, then failing. The only error
> > messages in the event log are:
>
Quote:

> > Event Type: Error
> > Event Source: UserInit
> > Event Category: None
> > Event ID: 1000
> > Date: 02/02/2009
> > Time: 12:51:30
> > User: N/A
> > Computer: LAPTOP1
> > Description:
> > Could not execute the following script \\server1.domain.com\NETLOGON
> > \logon.vbs. The network location cannot be reached.
>
Quote:

> > Having watched the network traffic using Ethereal/Wireshark, I can't
> > see anything else that looks obviously wrong.
>
Quote:

> > Could someone see if there is something in the logon script that is
> > wrong? Someone suggested adding a section that exits if it can't find
> > the logon server. However, if the event log is saying it can't find
> > the logon script to run, I can't see how this would help!?
>
Quote:

> > Any help or suggests would be much appreciated!
>
Quote:

> > Ben
>
> I would insert an instruction right at the beginning of the script to exit
> if the domain controller is inaccessible.- Hide quoted text -
>
> - Show quoted text -
Thanks for the reply.

Would the following code work?

Set oRootDSE = GetObject("LDAP://RootDSE")
strDNC = oRootDSE.get("DefaultNamingContext")
If (Err.Number <> 0) Then
WScript.Quit
End If
My System SpecsSystem Spec
Old 02-02-2009   #4 (permalink)
Richard Mueller [MVP]


 
 

Re: Logon Script Causing Laptops To Hang - Problems in script?


"Ben" <bjblackmore@xxxxxx> wrote in message
news:935b1e32-784a-4474-8605-da86d34eaa9f@xxxxxx
Quote:

> On 2 Feb, 17:01, "Pegasus \(MVP\)" <I....@xxxxxx> wrote:
Quote:

>> "Ben" <bjblackm...@xxxxxx> wrote in message
>>
>> news:8c7e5928-b141-4abb-b722-e32157efe408@xxxxxx
>>
>>
>>
>>
>>
Quote:

>> > Hi,
>>
Quote:

>> > I'm using the following script to map drives, and perform a few
>> > functions when users logon to our domain. However, in the past 2 or 3
>> > months it seems that when a laptop is away from the domain, logon
>> > takes several minutes, and applications can take up to 2 minutes to
>> > start/open. The only way around tis is to disable the wi-fi
>> > connection, or pull the cable out of a LAN connection. However, when
>> > back in the office, on our network, start up is perfectly fine, and
>> > applications open in seconds.
>>
Quote:

>> > I've been advised that this behaviour is probably due to the logon
>> > script, somehow hunting for a domain controller to logon, waiting a
>> > number of minutes to try and find it, then failing. The only error
>> > messages in the event log are:
>>
Quote:

>> > Event Type: Error
>> > Event Source: UserInit
>> > Event Category: None
>> > Event ID: 1000
>> > Date: 02/02/2009
>> > Time: 12:51:30
>> > User: N/A
>> > Computer: LAPTOP1
>> > Description:
>> > Could not execute the following script \\server1.domain.com\NETLOGON
>> > \logon.vbs. The network location cannot be reached.
>>
Quote:

>> > Having watched the network traffic using Ethereal/Wireshark, I can't
>> > see anything else that looks obviously wrong.
>>
Quote:

>> > Could someone see if there is something in the logon script that is
>> > wrong? Someone suggested adding a section that exits if it can't find
>> > the logon server. However, if the event log is saying it can't find
>> > the logon script to run, I can't see how this would help!?
>>
Quote:

>> > Any help or suggests would be much appreciated!
>>
Quote:

>> > Ben
>>
>> I would insert an instruction right at the beginning of the script to
>> exit
>> if the domain controller is inaccessible.- Hide quoted text -
>>
>> - Show quoted text -
>
> Thanks for the reply.
>
> Would the following code work?
>
> Set oRootDSE = GetObject("LDAP://RootDSE")
> strDNC = oRootDSE.get("DefaultNamingContext")
> If (Err.Number <> 0) Then
> WScript.Quit
> End If
Yes. Also, I would remove "On Error Resume Next" so you get an error message
that will provide a clue. It could be a specific computer, like Server1,
cannot be contacted, rather than a DC. After a quick glance the only part I
see that requires a DC is where you bind to "ADSystemInfo". You might use
error trapping in the function IsMember method. However, the script will
still fail if Server1 is not available.

--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--


My System SpecsSystem Spec
Old 02-03-2009   #5 (permalink)
Ben


 
 

Re: Logon Script Causing Laptops To Hang - Problems in script?

On 2 Feb, 18:44, "Richard Mueller [MVP]" <rlmueller-
nos...@xxxxxx> wrote:
Quote:

> "Ben" <bjblackm...@xxxxxx> wrote in message
>
> news:935b1e32-784a-4474-8605-da86d34eaa9f@xxxxxx
>
>
>
>
>
Quote:

> > On 2 Feb, 17:01, "Pegasus \(MVP\)" <I....@xxxxxx> wrote:
Quote:

> >> "Ben" <bjblackm...@xxxxxx> wrote in message
>
Quote:
Quote:

> >>news:8c7e5928-b141-4abb-b722-e32157efe408@xxxxxx
>
Quote:
Quote:

> >> > Hi,
>
Quote:
Quote:

> >> > I'm using the following script to map drives, and perform a few
> >> > functions when users logon to our domain. However, in the past 2 or 3
> >> > months it seems that when a laptop is away from the domain, logon
> >> > takes several minutes, and applications can take up to 2 minutes to
> >> > start/open. The only way around tis is to disable the wi-fi
> >> > connection, or pull the cable out of a LAN connection. However, when
> >> > back in the office, on our network, start up is perfectly fine, and
> >> > applications open in seconds.
>
Quote:
Quote:

> >> > I've been advised that this behaviour is probably due to the logon
> >> > script, somehow hunting for a domain controller to logon, waiting a
> >> > number of minutes to try and find it, then failing. The only error
> >> > messages in the event log are:
>
Quote:
Quote:

> >> > Event Type: Error
> >> > Event Source: UserInit
> >> > Event Category: None
> >> > Event ID: 1000
> >> > Date: 02/02/2009
> >> > Time: 12:51:30
> >> > User: N/A
> >> > Computer: LAPTOP1
> >> > Description:
> >> > Could not execute the following script \\server1.domain.com\NETLOGON
> >> > \logon.vbs. The network location cannot be reached.
>
Quote:
Quote:

> >> > Having watched the network traffic using Ethereal/Wireshark, I can't
> >> > see anything else that looks obviously wrong.
>
Quote:
Quote:

> >> > Could someone see if there is something in the logon script that is
> >> > wrong? Someone suggested adding a section that exits if it can't find
> >> > the logon server. However, if the event log is saying it can't find
> >> > the logon script to run, I can't see how this would help!?
>
Quote:
Quote:

> >> > Any help or suggests would be much appreciated!
>
Quote:
Quote:

> >> > Ben
>
Quote:
Quote:

> >> I would insert an instruction right at the beginning of the script to
> >> exit
> >> if the domain controller is inaccessible.- Hide quoted text -
>
Quote:
Quote:

> >> - Show quoted text -
>
Quote:

> > Thanks for the reply.
>
Quote:

> > Would the following code work?
>
Quote:

> > Set oRootDSE = GetObject("LDAP://RootDSE")
> > strDNC = oRootDSE.get("DefaultNamingContext")
> > If (Err.Number <> 0) Then
> > WScript.Quit
> > End If
>
> Yes. Also, I would remove "On Error Resume Next" so you get an error message
> that will provide a clue. It could be a specific computer, like Server1,
> cannot be contacted, rather than a DC. After a quick glance the only part I
> see that requires a DC is where you bind to "ADSystemInfo". You might use
> error trapping in the function IsMember method. However, the script will
> still fail if Server1 is not available.
>
> --
> Richard Mueller
> MVP Directory Services
> Hilltop Lab -http://www.rlmueller.net
> --- Hide quoted text -
>
> - Show quoted text -
Thanks RIchard.

One last question - I'm just wondering how all this works?

The error in the event logs says "Could not execute the following
script \\server1.domain.com\NETLOGON\logon.vbs. The network location
cannot be reached." Does this mean it can't find the script to
execute, in which case, will adding the above code make any
difference? Or is the script cached (its a logon script in a group
policy, so possibly), and the error means it can't find the network
while running the script?

Thanks again

Ben
My System SpecsSystem Spec
Old 02-07-2009   #6 (permalink)
Richard Mueller [MVP]


 
 

Re: Logon Script Causing Laptops To Hang - Problems in script?


"Ben" <bjblackmore@xxxxxx> wrote in message
news:16fe10da-8ab8-4f57-a827-e0f37e5e296d@xxxxxx
Quote:

> On 2 Feb, 18:44, "Richard Mueller [MVP]" <rlmueller-
> nos...@xxxxxx> wrote:
Quote:

>> "Ben" <bjblackm...@xxxxxx> wrote in message
>>
>> news:935b1e32-784a-4474-8605-da86d34eaa9f@xxxxxx
>>
>>
>>
>>
>>
Quote:

>> > On 2 Feb, 17:01, "Pegasus \(MVP\)" <I....@xxxxxx> wrote:
>> >> "Ben" <bjblackm...@xxxxxx> wrote in message
>>
Quote:

>> >>news:8c7e5928-b141-4abb-b722-e32157efe408@xxxxxx
>>
Quote:

>> >> > Hi,
>>
Quote:

>> >> > I'm using the following script to map drives, and perform a few
>> >> > functions when users logon to our domain. However, in the past 2 or
>> >> > 3
>> >> > months it seems that when a laptop is away from the domain, logon
>> >> > takes several minutes, and applications can take up to 2 minutes to
>> >> > start/open. The only way around tis is to disable the wi-fi
>> >> > connection, or pull the cable out of a LAN connection. However, when
>> >> > back in the office, on our network, start up is perfectly fine, and
>> >> > applications open in seconds.
>>
Quote:

>> >> > I've been advised that this behaviour is probably due to the logon
>> >> > script, somehow hunting for a domain controller to logon, waiting a
>> >> > number of minutes to try and find it, then failing. The only error
>> >> > messages in the event log are:
>>
Quote:

>> >> > Event Type: Error
>> >> > Event Source: UserInit
>> >> > Event Category: None
>> >> > Event ID: 1000
>> >> > Date: 02/02/2009
>> >> > Time: 12:51:30
>> >> > User: N/A
>> >> > Computer: LAPTOP1
>> >> > Description:
>> >> > Could not execute the following script \\server1.domain.com\NETLOGON
>> >> > \logon.vbs. The network location cannot be reached.
>>
Quote:

>> >> > Having watched the network traffic using Ethereal/Wireshark, I can't
>> >> > see anything else that looks obviously wrong.
>>
Quote:

>> >> > Could someone see if there is something in the logon script that is
>> >> > wrong? Someone suggested adding a section that exits if it can't
>> >> > find
>> >> > the logon server. However, if the event log is saying it can't find
>> >> > the logon script to run, I can't see how this would help!?
>>
Quote:

>> >> > Any help or suggests would be much appreciated!
>>
Quote:

>> >> > Ben
>>
Quote:

>> >> I would insert an instruction right at the beginning of the script to
>> >> exit
>> >> if the domain controller is inaccessible.- Hide quoted text -
>>
Quote:

>> >> - Show quoted text -
>>
Quote:

>> > Thanks for the reply.
>>
Quote:

>> > Would the following code work?
>>
Quote:

>> > Set oRootDSE = GetObject("LDAP://RootDSE")
>> > strDNC = oRootDSE.get("DefaultNamingContext")
>> > If (Err.Number <> 0) Then
>> > WScript.Quit
>> > End If
>>
>> Yes. Also, I would remove "On Error Resume Next" so you get an error
>> message
>> that will provide a clue. It could be a specific computer, like Server1,
>> cannot be contacted, rather than a DC. After a quick glance the only part
>> I
>> see that requires a DC is where you bind to "ADSystemInfo". You might use
>> error trapping in the function IsMember method. However, the script will
>> still fail if Server1 is not available.
>>
>> --
>> Richard Mueller
>> MVP Directory Services
>> Hilltop Lab -http://www.rlmueller.net
>> --- Hide quoted text -
>>
>> - Show quoted text -
>
> Thanks RIchard.
>
> One last question - I'm just wondering how all this works?
>
> The error in the event logs says "Could not execute the following
> script \\server1.domain.com\NETLOGON\logon.vbs. The network location
> cannot be reached." Does this mean it can't find the script to
> execute, in which case, will adding the above code make any
> difference? Or is the script cached (its a logon script in a group
> policy, so possibly), and the error means it can't find the network
> while running the script?
>
> Thanks again
>
> Ben
I think you are correct, the logon script file is not being located.

You say the logon script is specified in a group policy, but if so that is
the wrong location. That is the location for logon scripts specified on the
Profile tab of ADUC. Best would be to copy the logon script file, logon.vbs,
to the clipboard, then navigate in Group Policy, open the "Logon" setting in
the Group Policy editor, press the "Show Files..." button, and paste the
file in the dialog. Then you can select the file as the logon script. This
ensure the file is in the correct location. See this link for more on
configuring logon scripts:

http://www.rlmueller.net/LogonScriptFAQ.htm

--
Richard Mueller
MVP Directory Services
Hilltop Lab - http://www.rlmueller.net
--


My System SpecsSystem Spec
Reply

Thread Tools


Similar Threads
Thread Forum
Logon script PowerShell
Logon Script VB Script
Script for every logon in the last 90 days VB Script
CDO script causes Exchange Server to hang VB Script
Logon Script Vista General


Vista Forums is an independent web site and has not been authorized,
sponsored, or otherwise approved by Microsoft Corporation.
"Windows Vista", the Start Orb, and related materials are trademarks of Microsoft Corp.
© Designer Media Ltd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46