I have a problem with a script file not disconnecting and connecting drives

I have an issue with a script file not disconnecting and mapping a new drive.  If I step throught the script it works everytime, but If I run it through without stops it will not work.  Anyone have any ideas?  Here is the example of the file.
Set objNetwork = WScript.CreateObject("WScript.Network")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
Set CheckDrive = objNetwork.EnumNetworkDrives()
Set MultiPrinter = CreateObject("WScript.Network")

If objFSO.DriveExists("I:") Then
objNetwork.RemoveNetworkDrive "I:", True, True
End If
objNetwork.MapNetworkDrive "I:", "\\wgh-maindc\install", false
enaryAsked:
Who is Participating?
 
MaximumIQConnect With a Mentor Commented:
Ok so I tested this my self and I found that when the script pointing to \\Server2\Folder2 runs, while there is an I: Drive already mapped to \\Server1\Folder1 , it appears by looking at my computer that nothing changed, however the path did change, it just doesn't update in the windows GUI. So when I opened "Folder1 (\\Server1) (I:)" it actually opened "\\Server2\Folder2"

I'm not sure if this is the same thing that's happening on your end or not, but if it is, you can take care of it by adding a 5 second or so pause after unmapping the old drive and mapping the new one.

So something like this

 
Option Explicit
On Error Resume Next

Dim strDriveLetter1, strRemotePath1, strDriveLetter2, strRemotePath2, strPrint1, strPrint2, strPrint3, strOldPrint1, strOldPrint2, strOldPrint3
Dim strDriveLetter3, strRemotePath3, strDriveLetter4, strRemotePath4, strDriveLetter5, strRemotePath5
Dim strDriveLetter6, strRemotePath6
Dim objNetwork, objShell, objFSO
Dim CheckDrive, AlreadyConnected, intCounter
Dim MultiPrinter, UNCpath1, UNCpath2, UNCpath3

Set objNetwork = WScript.CreateObject("WScript.Network")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
Set CheckDrive = objNetwork.EnumNetworkDrives()
Set MultiPrinter = CreateObject("WScript.Network")

If objFSO.DriveExists("I:") Then
	objNetwork.RemoveNetworkDrive "I:", True, True
End If

wscript.sleep 5

objNetwork.MapNetworkDrive "I:", "\\wgh-maindc\install", false

Open in new window

0
 
MaximumIQCommented:
I'm not sure if you're getting an error or not when running the script. Honestly though, I don't see any problems with your method but i'm guessing the issue might be FileSystemObject not detecting the drive, therefore not disconnecting it and in turn the MapNetworkDrive is not doing anything.

You can give this a shot. Basically I just got rid of the excess object declares, added error handling and removed checking for drive existence via FileSystemObject, so that you're only using a single object that you can blame if there is a failure.

On Error Resume Next
Set objNetwork = WScript.CreateObject("WScript.Network")

objNetwork.RemoveNetworkDrive "I:", True, True
objNetwork.MapNetworkDrive "I:", "\\wgh-maindc\install", false
0
 
enaryAuthor Commented:
same issue.  If I step through it it works fine.  If I take the breaks out it doesn't work.  It is almost like it doesn't see any of the lines.
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

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.

 
MaximumIQCommented:
How are you running this anyways? VBS file, in a VB project, etc...
0
 
enaryAuthor Commented:
I am running this as a VB script file for user logons.  I am not gettting any error messages when I run this.  I have never quite seen anything like this before.  I am at a total loss.  I removed the extra lines as suggested in the first response and tooks out the if statement, but it still won't work if I just run it.  If I set the breaks and run it by stepping through those lines it disconects the old drives and maps the new drive.  Take the breaks out and run it and it acts like it doesn't see those lines at all.

Option Explicit
'
Dim strDriveLetter1, strRemotePath1, strDriveLetter2, strRemotePath2, strPrint1, strPrint2, strPrint3, strOldPrint1, strOldPrint2, strOldPrint3
Dim strDriveLetter3, strRemotePath3, strDriveLetter4, strRemotePath4, strDriveLetter5, strRemotePath5
Dim strDriveLetter6, strRemotePath6
Dim objNetwork, objShell, objFSO
Dim CheckDrive, AlreadyConnected, intCounter
Dim MultiPrinter, UNCpath1, UNCpath2, UNCpath3

'On Error Resume Next

Set objNetwork = WScript.CreateObject("WScript.Network")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
Set CheckDrive = objNetwork.EnumNetworkDrives()
Set MultiPrinter = CreateObject("WScript.Network")

'If objFSO.DriveExists("I:") Then
objNetwork.RemoveNetworkDrive "I:", True, True
'End If
objNetwork.MapNetworkDrive "I:", "\\wgh-maindc\install", false

If objFSO.DriveExists("I:") Then
objNetwork.RemoveNetworkDrive "I:", False, True
End If
objNetwork.MapNetworkDrive "I:", "\\wgh-maindc\install", false
0
 
enaryAuthor Commented:
Finally, it works.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.