Windows Script Host Error


Recommended Posts

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.

script.jpg

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

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 by Punkrulz

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

  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.

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?

  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!

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:

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

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?

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.

  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.

  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.

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. :(

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Get this massive 4TB WD_BLACK SN7100 SSD at a new all-time low price by Taras Buria Xbox owners recently received a new storage upgrade option, which allows them to equip the Xbox Series X|S with 4TB of extra space. That card, however, has an eye-watering price tag—nearly as much as the 1TB Xbox Series S. On the PC side, though, things are much better. Right now, if you need a 4TB SSD without selling a kidney, you can get the WD_BLACK SN7100 PCIe Gen4 SSD. It is now available on Amazon at a new all-time low price after a 16% discount (nearly half the cost of the new 4TB Xbox Storage Expansion Card). The SN7100 is a fast, reliable, and, more importantly, affordable Gen4 solid-state drive. Its speeds are rated up to 7,000MB/s sequential read and 6,700MB/s sequential write, while random input-output speeds are rated at 900K IOPS read and 1,350K IOPS write. These specs are not record-breaking, but they are fast enough for modern gaming (DirectStorage is supported), fast loading times in games and apps, and quick file transfer. The WD_BLACK SN7100 has a limited five-year warranty and endurance rating up to 2,400 TBW. You can monitor the health of your drive in the WD_Black Dashboard app on Windows. As for compatibility, you can use the SN7100 in any PC that accommodates M.2 2280 PCIe Gen4 drives, including PlayStation 5. It is compatible with PCIe Gen3 systems, but the maximum speeds will be limited. 4TB WD_BLACK SN7100 PCIe Gen4 Solid-State Drive - $249.99 | 16% off on Amazon US This Amazon deal is US-specific and not available in other regions unless specified. If you don't like it or want to look at more options, check out the Amazon US deals page here. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
    • Snagit 2025.2.0 by Razvan Serea Snagit is the most complete screen capture utility available. Showing someone exactly what you see on your screen is sometimes the quickest and clearest way to communicate. With Snagit, you can select anything on your screen – an area, image, article, Web page, or error message – and capture it. Then, save the screen capture to a file, send it to Snagit​'s editor to add professional effects, share it by e-mail, or drop it into PowerPoint®, Word®, or another favorite application. Capture and share images, text or video from your PC. Create beautiful presentations, flawless documentation and quickly save online content. The latest version of Snagit offers a totally new interface and workflow - making SnagIt easier for beginners to use, while still providing maximum convenience and flexibility for the screen capture experts. Snagit 2025.2.0 changelog: Edit Images from Camtasia Snagit can now be used to seamlessly edit images from Camtasia. Requires Camtasia version 2025.2.0 or later. In the Camtasia Media Bin, right-click an image and select the Edit in Snagit option. In Snagit, make your edits. When finished, click Send in the "Send changes to Camtasia" notification to replace the image on your Camtasia timeline. Step Capture Improved the Step Capture template to accommodate longer auto-populated step text. Annotations such as Callout or Arrow tool objects now anchor to and move with sections as sections are added to, reordered, or deleted from templates. Subscription Software Updated the Account dropdown to open automatically when new subscription related messages are present. Performance Improvements Improved the startup time for Snagit Capture application. Updates for IT Administrators Updated BouncyCastle.Cryptography package to address CVE-2024-29857 and CVE-2024-30172. Removed dependency on Xceed Zip. Updated LeadTools DLLs. Fixed an issue where Snagit might not recognize offline subscription activation. Fixed an issue where the video recording toolbar could be hidden from users when using Snagit in virtual environments or with remote desktop applications. Bug Fixes Fixed an issue where using Step Capture with the Share destination set to File in the Capture Window could result in data loss. Fixed a crash that could occur when capturing on some HDR monitors. Fixed an issue where the cursor object in a capture might include some of the background image in certain situations. Fixed an issue with the Box share destination to use the default browser for authentication. Fixed an issue where the Blur tool Color property could show when the blur or pixelate Type was selected. Fixed an issue where the privacy policy link in Snagit's installer might not open in the expected language. (PONRPD) Download: Snagit 64-bit | 419.0 MB (Shareware) Links: SnagIt Home Page | Release Notes Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Markdown's creator weighs in on rumored Apple Notes export feature by David Uzondu The rumor mill is churning as we draw closer to WWDC2025, and one of the interesting developments being discussed is a report from 9To5Mac that claimed Apple Notes in iOS 19 iOS 26, will finally get Markdown export capabilities. This caught the attention of many, including the person who actually invented Markdown. John Gruber, the creator of Markdown, shared his thoughts on this potential new feature on his weblog. For those who don't know, Markdown, which Gruber developed back in 2004 with significant input from Aaron Swartz (RIP!), is a lightweight markup language designed for creating formatted text using a plain text editor. Its main advantage is that it is easy to read and easy to write. When the news first broke, some interpretations suggested Apple Notes would gain full Markdown support, transforming it into an application where users could directly type and see Markdown syntax, much like how specialized editors like Obsidian operate. These tools are intended for users to work directly within the Markdown framework for all their note-taking. Gruber himself indicated that he does not believe Apple Notes should become a full-fledged "Markdown editor," even as an option. He stated that such a change would be a "huge mistake." His reasoning is rooted in his original vision for Markdown and his view of Apple Notes' purpose. He reiterated that he initially designed Markdown as a "text-to-HTML conversion tool for web writers" and for contexts requiring plain text file storage. He feels Apple Notes serves a different, valuable role with its current WYSIWYG (What You See Is What You Get) rich text editing. This interface, he argues, is excellent for quickly capturing thoughts, particularly on an iPhone, and aligns with the Macintosh philosophy of user-friendliness. He pointed out that creating a syntactically incorrect markdown is trivial, whereas a malformed note should not be possible with Apple Notes. Despite his reservations about a complete Markdown overhaul for the editing experience, Gruber finds the prospect of exporting notes in Markdown format very appealing. He wrote that this specific capability "sounds awesome." He pointed out, quite rightly, that Apple Notes' current export functions are rather limited, primarily offering PDF and Pages document formats. Adding Markdown export would provide a much more flexible way for users, especially those in the "niche" he identifies with, to move their content out of Notes and into other applications. Gruber did express curiosity about how Apple might handle images embedded in notes during a Markdown export, as image handling can be a tricky aspect of Markdown.
    • What? Every single app I've installed from the Microsoft Store comes from its intended developer and works perfectly fine. What apps do you install?
    • Microsoft Store is such a weird place filled with so much absolute garbage and with reputable apps that somehow come from questionable sources. Like, the app name is known, the images back it up but the publisher is just some weird name that's not mentioned for the apps we know.
  • Recent Achievements

    • Week One Done
      CHUNWEI earned a badge
      Week One Done
    • One Year In
      survivor303 earned a badge
      One Year In
    • Week One Done
      jbatch earned a badge
      Week One Done
    • First Post
      Yianis earned a badge
      First Post
    • Rookie
      GTRoberts went up a rank
      Rookie
  • Popular Contributors

    1. 1
      +primortal
      419
    2. 2
      +FloatingFatMan
      182
    3. 3
      snowy owl
      181
    4. 4
      ATLien_0
      176
    5. 5
      Xenon
      139
  • Tell a friend

    Love Neowin? Tell a friend!