Thursday, October 11, 2018

Windows 10 : Stop Network Shares from dropping between restarts

you may notice that the network/mapped drives are randomly disappearing. A logoff/login will fix it temporarily, but what a pain. This is how you permanently fix the vanishing drives.


Registry Method

Use this method to change default time-out period of autodisconnect .

  1. Run |  regedit

  2. Locate and then click the following key in the registry:

  3. autodisconnect

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters

Value:

Value: autodisconnect
Data type : REG_DWORD
Range : Hexadecimal
Default value: ffffffff

4. KeepConn : Change time-out the client-side during a UNC connection, specify in KeepConn. Locate and then click the following key in the registry:


Key:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]

Value:

Value: KeepConn
Data type : REG_DWORD
Range : 1 to 65535 (sec)
Default value: 600 sec = 10 mins

Command Line Method

1. autodisconnect  :

change the default time-out period for the autodisconnect feature of the Server service,

2. Run | cmd as Admin


3. Type following cmd:

net config server /autodisconnect:-1

net config server /autodisconnect:number

More info:

0 = the autodisconnect feature is not turned off

-1 = the autodisconnect feature is turned off

1-65,535 =  number is the number of minutes that you want the server to wait before it disconnects a mapped network drive

4. Windows 10 only:

This can the SMB issues with dropping network shares:open a administrator command prompt and type the following hitting enter after each line.


sc.exe config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc.exe config mrxsmb20 start= disabled

then Restart the computer

To reverse :


sc.exe config lanmanworkstation depend= bowser/mrxsmb10/mrxsmb20/nsi
sc.exe config mrxsmb20 start= auto
then Restart the computer


Others:

1. Network Adapters:

I've found that by turning off the network card's power saving features I've not been losing the drives.

2. Group Policy :

Group Policy drives which are set to "Recreate". Windows 8/10 automatically runs Group Policy updates in the background and disconnects/reconnects the drive to Recreate it.

Change the drive to "Update" in group policy and the issue will disappear!

Run | gpedit.msc:

User Configuration > Preferences > Windows Settings > Drive Maps

Change the drive to “Update” in group policy

See example here


3. Run a custom .bat file on login and network connect:


- FixMappedDrives.bat

Sample file below, this connects to mapped drives based on loginid of user, in this case I am hard coding a userid to a mapped drive credential. This could be altered to use dynamic credentials based on userid and lookup up creds based on current logged in user.

- task Scheduler

Run bat fule on following events:

A) Login and

StartUp using StartUp folder or Task Scheduler Logon event

B) Network connect

Task Scheduler task: Network connect event


- Sample files:


FixedMapDrives.bat


@echo off
echo MyFileServer:MapDrives Login Script START

echo MyFileServer:MapDrives Checking connection to MyFileServer....
ping -n 10 MyFileServer > nul
echo MyFileServer:MapDrives done Checking connection to MyFileServer.... Error: %errorlevel%

if %errorlevel% == 0 (
     echo MyFileServer:MapDrives CONNECTED
     goto connected
) ELSE (
     echo MyFileServer:MapDrives ERROR- Not Connected
     goto end
)


:connected
     echo MyFileServer start Map Drives for user %username%...
     echo off
       net use * /delete /yes
      
    
     IF /i NOT "%username%"=="User1" GOTO NEXT1
         echo MyFileServer:MapDrives Add DoyleJ mapped drives
         net use * /delete /yes
         NET USE M: \\MyFileServer\homes\User1  /USER:MyFileServer\User1 SomePassword
         NET USE Y: \\MyFileServer\Public  /USER:MyFileServer\User1 SomePassword
         NET USE P: \\MyFileServer\Photo  /USER:MyFileServer\User1 SomePassword
         NET USE V: \\MyFileServer\Video  /USER:MyFileServer\User1 SomePassword
       GOTO ENDIF
    
     :NEXT1
     IF /i NOT "%username%"=="user2" GOTO NEXT2
         echo Add user2
         echo off
           net use * /delete /yes
           NET USE M: \\MyFileServer\homes\user2  /USER:MyFileServer\user2 SomePassword
         NET USE Y: \\MyFileServer\Public  /USER:MyFileServer\user2 SomePassword
         NET USE P: \\MyFileServer\Photo  /USER:MyFileServer\user2 SomePassword
         NET USE V: \\MyFileServer\Video  /USER:MyFileServer\user2 SomePassword
       GOTO ENDIF
    
      
     :NEXT2
         echo Add Public
         echo off
           net use * /delete /yes
         NET USE Y: \\MyFileServer\Public  /USER:MyFileServer\User1 SomePassword
       GOTO ENDIF
    
     :ENDIF
    
:end

echo MyFileServer Login Script DONE

- Powershell


FixedMapDrives.ps1

$i=3
     while($True){
     $error.clear()
     $MappedDrives = Get-SmbMapping |where -property Status -Value Unavailable -EQ | select LocalPath,RemotePath
     foreach( $MappedDrive in $MappedDrives)
     {
         try {
             New-SmbMapping -LocalPath $MappedDrive.LocalPath -RemotePath $MappedDrive.RemotePath -Persistent $True
         } catch {
             Write-Host "There was an error mapping $MappedDrive.RemotePath to $MappedDrive.LocalPath"
         }
     }
     $i = $i - 1
     if($error.Count -eq 0 -Or $i -eq 0) {break}

    Start-Sleep -Seconds 30

}

No comments:

Post a Comment