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

enary
enary used Ask the Experts™
on
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
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
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

Author

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.
How are you running this anyways? VBS file, in a VB project, etc...
Expert Spotlight: Joe Anderson (DatabaseMX)

We’ve posted a new Expert Spotlight!  Joe Anderson (DatabaseMX) has been on Experts Exchange since 2006. Learn more about this database architect, guitar aficionado, and Microsoft MVP.

Author

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

Author

Commented:
Finally, it works.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial