Punkrulz Posted October 27, 2006 Share Posted October 27, 2006 Lately more and more issues have been occuring on various clients involving the Windows Script host. Users are issued a script that applies when they first login. This script handles the mapping of 6 or so mapped drives. Unfortunately, lately more and more computers have been having issues applying this script, when someone logs off and then at some point someone logs in (Doesn't matter how long they wait). This issue doesn't occur on the first boot / first login of the machine... but will always occur thereafter. It doesn't seem to occur quite on every machine, but it happens on more and more now. Being for a police department, this issue is becomming more critical, due to the amount of users logging in and out of the machines... and if the drives don't get mapped, they lose crucial access to their reports and other files. Can someone please help me figure out a resolution to this problem? Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/ Share on other sites More sharing options...
MazX_Napalm Posted October 27, 2006 Share Posted October 27, 2006 Can you post the VBS code so that we can check it? Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-587991380 Share on other sites More sharing options...
Punkrulz Posted October 27, 2006 Author Share Posted October 27, 2006 (edited) Sure!!! (1) (2) Dim objNet (3) (4) Set objNet = CreateObject("Wscript.Network") (5) (6) objNet.MapNetworkDrive "H:", "\\********\HOME" objNet.MapNetworkDrive "I:", "\\********\Apps" objNet.MapNetworkDrive "Q:", "\\********\formdata" objNet.MapNetworkDrive "S:", "\\********\schedulesoft" objNet.MapNetworkDrive "T:", "\\********\Traffic" objNet.MapNetworkDrive "W:", "\\********\idphoto" Edited October 27, 2006 by Punkrulz Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-587993168 Share on other sites More sharing options...
+primortal Subscriber² Posted October 27, 2006 Subscriber² Share Posted October 27, 2006 Which is line 6? is it objNet.MapNetworkDrive "I:", "\\********\Apps"? Do machines that are having this problem always choke at line 6? there might be something wrong with that server/share Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-587993180 Share on other sites More sharing options...
Punkrulz Posted October 27, 2006 Author Share Posted October 27, 2006 primortal said: Which is line 6? is it objNet.MapNetworkDrive "I:", "\\********\Apps"? Do machines that are having this problem always choke at line 6? there might be something wrong with that server/share I've added the line numbers in the script so that you can see where line 6 is. Line 6 is the first line that begins the mapping of the drives. I don't believe that there is a problem with the server, I believe this problem lies wiht one users settings not leaving when the user logs off, then someone else logs in and it negates itself. They always do choke at line 6, but again that's where the drives are beginning the mapping. The share itself is working correctly. Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-587993205 Share on other sites More sharing options...
+BudMan MVC Posted October 27, 2006 MVC Share Posted October 27, 2006 Are these servers all in the same domain? Are the users all logging into the same domain? Are they on the same subnet? What are you using for netbios name resolution? Wins or broadcast? On a machine that you get the error on - what is the output of just doing a net view \\servername after the script failed? Are the drives already mapped? To somewhere else? When the script is trying to run? If so so you could check for this, and or just do a simple remove and then add, etc.. Once the user has logged in - what drives are listed? net use If you add "On Error Resume Next" does it die on the next line? Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-587993297 Share on other sites More sharing options...
Punkrulz Posted October 29, 2006 Author Share Posted October 29, 2006 BudMan said: Are these servers all in the same domain? Are the users all logging into the same domain? Are they on the same subnet? What are you using for netbios name resolution? Wins or broadcast? 1) The mapped drives are really all pointing to just the 1 server, but in any case yes it's all going to the same domain. 2) Yes, again they're on the same subnet. 3) While we do have WINS Enabled, I think initially it is Broadcast until I manually add the WINS information to the adapter... I have not found an automatic way to do this so I don't have to go to all machines to add WINS information. Quote On a machine that you get the error on - what is the output of just doing a net view \\servername after the script failed? I'm relatively certain that when you do the net use command it says "No Network Provider Accepted the Given Network Path" Quote Are the drives already mapped? To somewhere else? When the script is trying to run? If so so you could check for this, and or just do a simple remove and then add, etc.. Technically you can say they are mapped. User logs in. Does what he needs to do. User logs off. A second user logs in, and error message occurs. Almost as if, "Hey, user logged off but the drives are still mapped... user 2 logs in, error appears, then the mapped drives disappear. Quote Once the user has logged in - what drives are listed?net use After the error occurs, only the local drives appear... no mapped drives appear as they should be. Quote If you add "On Error Resume Next" does it die on the next line? Ok, I don't know scripting at all... where do I put this line??? Thanks for your help! Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-587996968 Share on other sites More sharing options...
dieterich Posted October 30, 2006 Share Posted October 30, 2006 What you probably need is a "cleanup" type script. If you are assigning drives at logon, you should remove them at logoff to prevent errors. Set net = WScript.CreateObject("Wscript.Network") net.RemoveNetworkDrive "DRIVE LETTER:" WSCript.Quit I'd at least try it and see what happens. :cool: Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-588001830 Share on other sites More sharing options...
MazX_Napalm Posted October 30, 2006 Share Posted October 30, 2006 This is the code I use. ' ######################################################################## ' Written in VBScript. ' Establishes map drives. ' Assign to OU Group Policy under USER CONFIG, WINDOWS SETTINGS, SCRIPTS, LOGON SCRIPT. ' ' This script will: ' (1) check if the drive is already connected and, if so, disconnect it. ' (2) map the drive. ' ' Arguments are as follows: ' MAPIT DRIVE-LETTER as string, PATH as string, USER as string, PASSWORD as string ' (1) Do not specify colon in drive letter. ' (2) Do not end path with a forward slash. ' (3) If user and password are not required to establish map, then specify a zero-length string as follows: "" ' ' Reference Microsoft info at: ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsmthmapnetworkdrive.asp ' ######################################################################## ' Create the Shell or environment for the commands: Set WshShell = WScript.CreateObject("WScript.Shell") ' Define objects: Set WshNetwork = WScript.CreateObject("WScript.Network") Set oDrives = WshNetwork.EnumNetworkDrives() ' ==================================== ' DEFINE WHO TO CONTACT for pop-up messages: ' ==================================== strContactMessage = "If you require assistance, please contact IT Support." ' ================== ' DEFINE DRIVES TO MAP: ' ================== Mapit "m", "\\server\share", "", "" ' ======== ' CLEAN UP: ' ======== Set WshShell = Nothing Set WshNetwork = Nothing Set oDrives = Nothing ' ################################## ' DO NOT MODIFY ANYTHING BELOW THIS POINT... ' unless you are familiar with the proper settings. ' ################################## Sub Mapit(strLetter, strPath, strUser, strPass) ' Define the DriveLetter: DriveLetter = strLetter & ":" ' Define the remote path: RemotePath = strPath ' Pop-up Notices (set to False to disable notices, otherwise set to True): bPopReminder = True ' Define known errors to trap: Dim arrErrCode(1) Dim arrErrDesc(1) arrErrCode(0) = -2147023694 arrErrCode(1) = -2147024811 arrErrDesc(0) = "Unable to map drive " & DriveLetter & " to " & RemotePath _ & " due to a previously defined remembered map with the same letter." _ & vbCrLf & vbCrLf & "Please MANUALLY disconnect map drive " & DriveLetter _ & ", then Log Out and Log back in." arrErrDesc(1) = "Unable to map drive " & DriveLetter & " to " & RemotePath _ & " since " & DriveLetter & ": was previously reserved by your computer." _ & vbCrLf & vbCrLf & "(Refer to Management, Shared Folders, Shares)" ' Define whether the map information should be removed from the current user's profile: bForceRemoveFromProfile = True bRemoveFromProfile = True ' Define whether the map information should be stored in the current user's profile: bStoreInProfile = False ' Check if already connected: AlreadyConnected = False For i = 0 To oDrives.Count - 1 Step 2 If LCase(oDrives.Item(i)) = LCase(DriveLetter) Then AlreadyConnected = True Next ' Attempt to map the drive. If already mapped, first attempt disconnect: If AlreadyConnected = True then WshNetwork.RemoveNetworkDrive DriveLetter, bForceRemoveFromProfile, bRemoveFromProfile If Not strUser = "" Then WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile, strUser, strPass Else WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile End If ' If bPopReminder Then WshShell.PopUp "Drive " & DriveLetter & " disconnected, then connected successfully to " & RemotePath Else On Error Resume Next If Not strUser = "" Then WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile, strUser, strPass Else WshNetwork.MapNetworkDrive DriveLetter, RemotePath, bStoreInProfile End If If Err.Number <> 0 Then bKnownError = False For I = LBound(arrErrCode) To UBound(arrErrCode) If Err.Number = arrErrCode(I) Then bKnownError = True strPopMessage = arrErrDesc(I) ' Display the Disconnect Network Drives window: If Err.Number = arrErrCode(0) Then Set objWSH = Wscript.CreateObject("WScript.Shell") objWSH.Run "rundll32.exe shell32.dll,SHHelpShortcuts_RunDLL Disconnect", 1, true End If Exit For End If Next If Not bKnownError Then strPopMessage = "Unable to map drive " & DriveLetter & " to " & RemotePath _ & " due to reason stated below." End If ' Display warning message: strPopMessage = "WARNING!! WARNING!! WARNING!! WARNING!!" _ & vbCrLf & vbCrLf & strPopMessage _ & vbCrLf & vbCrLf & Err.Description & " (error " & Err.Number & ")" _ & vbCrLf & vbCrLf & strContactMessage WshShell.PopUp strPopMessage Else ' If bPopReminder Then WshShell.PopUp "Drive " & DriveLetter & " connected successfully to " & RemotePath End If End If mDrive = "M:\" Set oShell = CreateObject("Shell.Application") oShell.NameSpace(mDrive).Self.Name = "Share 123" ' Release resources: Set objWSH = Nothing ' Slight pause to ensure each pass has time to commit: wscript.sleep 200 End Sub Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-588001870 Share on other sites More sharing options...
Punkrulz Posted November 1, 2006 Author Share Posted November 1, 2006 Dieterich: Where would I put this information? Would this be at the bottom of the logon script I already have? I'm sorry, I'm not familiar with scripting at all... MazX: Same thing, I am not familiar with scripting. Is the only thing I Need to change is near the top where you have the mapped drives? At least in your script, it's just M... Is that the only thing that I modify? I see at the top it states that this goes as a group policy for the users. Can this script also be applied as a script specified to be processed under the Active Directory Users & Computers under the profile tab? Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-588007891 Share on other sites More sharing options...
MazX_Napalm Posted November 1, 2006 Share Posted November 1, 2006 Change here: Quote ' ==================' DEFINE DRIVES TO MAP: ' ================== Mapit "m", "\\server\share", "", "" This says what drive letter to use and the path to the share. And here: Quote mDrive = "M:\"Set oShell = CreateObject("Shell.Application") oShell.NameSpace(mDrive).Self.Name = "Share 123" This says that drive M should be called "Share 123" rather than "Share 123 on Server" You save the code into a text file. Then rename that file map_drvs.vbs In AD U&C you select the OU that you want this script to apply to. Create a GPO that applies to that OU. In the GPO you set the Logon script (in User Config) to use the map_drvs.vbs When users are placed in this OU the script will be run at login. When a user is removed from the OU, the script no longer applies and the drive is not mapped. When the user logs on and is not connected to the network, the script will not run and the drive is not mapped. Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-588008294 Share on other sites More sharing options...
Punkrulz Posted November 2, 2006 Author Share Posted November 2, 2006 MazX_Napalm said: Change here: This says what drive letter to use and the path to the share. And here: This says that drive M should be called "Share 123" rather than "Share 123 on Server" You save the code into a text file. Then rename that file map_drvs.vbs In AD U&C you select the OU that you want this script to apply to. Create a GPO that applies to that OU. In the GPO you set the Logon script (in User Config) to use the map_drvs.vbs When users are placed in this OU the script will be run at login. When a user is removed from the OU, the script no longer applies and the drive is not mapped. When the user logs on and is not connected to the network, the script will not run and the drive is not mapped. For that second part I have to edit, how would that look like? I'm thinking by your example, it would have to look like this: Line 1: Drive A Line 1: Line 1: Line 2: Drive B Line 2: Line 2: Line 3: Drive C Line 3: Line 3: Is that correct? And also, the reason I ask where it can be applied is because right now every single user that logs in has the logon script applying to it inside of the profile options in ADUC... no GPO is applying that. Can't I just modify the existing logon.vbs so I don't have to go to every user and remove the logon script? It's only modifying their drives anyways. Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-588009078 Share on other sites More sharing options...
MazX_Napalm Posted November 2, 2006 Share Posted November 2, 2006 Quote ' ==================' DEFINE DRIVES TO MAP: ' ================== Mapit "f", "\\server\share1", "", "" Mapit "g", "\\server\share2", "", "" Mapit "h", "\\server\share3", "", "" Quote mDrive = "f:\"Set oShell = CreateObject("Shell.Application") oShell.NameSpace(mDrive).Self.Name = "Music" mDrive = "g:\" Set oShell = CreateObject("Shell.Application") oShell.NameSpace(mDrive).Self.Name = "Files" mDrive = "h:\" Set oShell = CreateObject("Shell.Application") oShell.NameSpace(mDrive).Self.Name = "Apps" You can. It would be better to use GPO's though. Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-588009754 Share on other sites More sharing options...
Punkrulz Posted November 5, 2006 Author Share Posted November 5, 2006 Alright, getting some other strange occurances here! Well, I have a test account that is in it's own OU. This account NO LONGER has the original logon script that was defined in Active Directory being applied to it. I setup MazX's script successfully as a GPO, and applied it to the same Test OU that my test account is apart of. When I login to a machine remotely (which is the machine I use at the office), everything seems to work fine, except 1 thing: I had set the GPO to show what commands were being processed from the login script... I take it the script is made so that it won't show it regardless? Well I had someone login to the test account on one of the problematic machines that always got the Script host error... and sure enough, the error occured again. But how?!?! It is the same exact error I have above, but logon.vbs is not being utilized! It isn't setup in the profile at all, so how would it be getting the error? Now I'm out of ideas. :( Link to comment https://www.neowin.net/forum/topic/506959-windows-script-host-error/#findComment-588019473 Share on other sites More sharing options...
Recommended Posts