BAT file to map to network drive without running as admin

I'm trying to create a .bat file that will map to a network drive when it is clicked (it would be even better if it could connect automatically on login if connected to the network, otherwise do not connect)

What I have so far is:

net use P: "\\server\foldername\foldername" 

Is there a way that I can create this so the users will not have to right click and run as an administrator? I would like it if they could just click the .bat file and it will map for them.

4

5 Answers

Save below in a test.bat and It'll work for you:

@echo off net use Z: \\server\SharedFolderName password /user:domain\Username /persistent:yes 

/persistent:yes flag will tell the computer to automatically reconnect this share on logon. Otherwise, you need to run the script again during each boot to map the drive.

For Example:

net use Z: \\WindowsServer123\g$ P@ssw0rd /user:Mynetdomain\Sysadmin /persistent:yes 
7

I just figured it out! What I did was I created the batch file like I had it originally:

net use P: "\\server\foldername\foldername" 

I then saved it to the desktop and right clicked the properties and checked run as administrator. I then copied the file to C:\Users\"TheUser"\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Where "TheUser" was the desired user I wanted to add it to.

0
@echo off net use z: /delete cmdkey /add:servername /user:userserver /pass:userstrongpass net use z: \\servername\userserver /savecred /persistent:yes set SCRIPT="%TEMP%\%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs" echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT% echo sLinkFile = "%USERPROFILE%\Desktop\userserver_in_server.lnk" >> %SCRIPT% echo Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT% echo oLink.TargetPath = "Z:\" >> %SCRIPT% echo oLink.Save >> %SCRIPT% cscript /nologo %SCRIPT% del %SCRIPT% 
2

I tried to create a mapped network driver via 'net use' with admin privilege but failed, it does not show. And if I add it through UI, it disappeared after reboot, now I made that through powershell. So, I think you can run powershell scripts from a .bat file, and the script is

New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\\Server01\Public"

add -persist at the end, you will create a persisted mapped network drive

New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\\Server01\Scripts" -Persist

for more details, refer New-PSDrive - Microsoft Docs

This .vbs code creates a .bat file with the current mapped network drives. Then, just put the created file into the machine which you want to re-create the mappings and double-click it. It will try to create all mappings using the same drive letters (errors can occur if any letter is in use). This method also can be used as a backup of the current mappings. Save the code bellow as a .vbs file (e.g. Mappings.vbs) and double-click it.

 
' ********** My Code ********** Set wshShell = CreateObject( "WScript.Shell" ) ' ********** Get ComputerName strComputer = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" ) ' ********** Get Domain sUserDomain = createobject("wscript.network").UserDomain Set Connect = GetObject("winmgmts://"&strComputer) Set WshNetwork = WScript.CreateObject("WScript.Network") Set oDrives = WshNetwork.EnumNetworkDrives Set oPrinters = WshNetwork.EnumPrinterConnections ' ********** Current Path sCurrentPath = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) ' ********** Blank the report message strMsg = "" ' ********** Set objects Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objWbem = GetObject("winmgmts:") Set objRegistry = GetObject("winmgmts://" & strComputer & "/root/default:StdRegProv") ' ********** Get UserName sUser = CreateObject("WScript.Network").UserName ' ********** Print user and computer 'strMsg = strMsg & " User: " & sUser & VbCrLf 'strMsg = strMsg & "Computer: " & strComputer & VbCrLf & VbCrLf strMsg = strMsg & "### COPIED FROM " & strComputer & " ###" & VbCrLf& VbCrLf strMsg = strMsg & "@echo off" & vbCrLf For i = 0 to oDrives.Count - 1 Step 2 strMsg = strMsg & "net use " & oDrives.Item(i) & " " & oDrives.Item(i+1) & " /user:" & sUserDomain & "\" & sUser & " /persistent:yes" & VbCrLf Next strMsg = strMsg & ":exit" & VbCrLf strMsg = strMsg & "@pause" & VbCrLf ' ********** write the file to disk. strDirectory = sCurrentPath Set objFSO = CreateObject("Scripting.FileSystemObject") If objFSO.FolderExists(strDirectory) Then ' Procede Else Set objFolder = objFSO.CreateFolder(strDirectory) End if ' ********** Calculate date serial for filename ********** intMonth = month(now) if intMonth < 10 then strThisMonth = "0" & intMonth else strThisMonth = intMOnth end if intDay = Day(now) if intDay < 10 then strThisDay = "0" & intDay else strThisDay = intDay end if strFilenameDateSerial = year(now) & strThisMonth & strThisDay sFileName = strDirectory & "\" & strComputer & "_" & sUser & "_MappedDrives" & "_" & strFilenameDateSerial & ".bat" Set objFile = objFSO.CreateTextFile(sFileName,True) objFile.Write strMsg & vbCrLf ' ********** Ask to view file strFinish = "End: A .bat was generated. " & VbCrLf & "Copy the generated file (" & sFileName & ") into the machine where you want to recreate the mappings and double-click it." & VbCrLf & VbCrLf MsgBox(strFinish) 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like