Fișier BAT pentru a mapa la unitatea de rețea fără a rula ca administrator (Programare, Windows, Fișier Batch, Unitate)

Bhetzie a intrebat.

Încerc să creez un fișier .bat care să se mapeze la o unitate de rețea atunci când se face clic pe ea (ar fi chiar mai bine dacă s-ar putea conecta automat la conectare dacă este conectat la rețea, altfel nu se conectează)

Ceea ce am până acum este:

net use P: "\serverfoldernamefoldername"

Există o modalitate prin care pot crea acest lucru astfel încât utilizatorii să nu fie nevoiți să facă clic dreapta și să ruleze ca administrator? Mi-ar plăcea ca aceștia să poată da un simplu clic pe fișierul .bat și acesta să se mapeze pentru ei.

Comentarii

  • Computerele sunt pe un domeniu? –  > Por daalbert.
  • Da, computerele sunt pe un domeniu –  > Por Bhetzie.
  • Asta ar trebui să funcționeze așa cum este. De ce menționezi că trebuie să o rulați ca administrator? –  > Por nobody.
5 răspunsuri
Sunny

Salvați mai jos într-un test.bat și va funcționa pentru tine:

@echo off

net use Z: \serverSharedFolderName password /user:domainUsername /persistent:yes

/persistent:yes steagul îi va spune computerului să reconecteze automat acest share la conectare. În caz contrar, trebuie să rulați din nou scriptul în timpul fiecărei porniri pentru a mapa unitatea.

De exemplu:

net use Z: \WindowsServer123g$ [email protected] /user:MynetdomainSysadmin /persistent:yes

Comentarii

  • Ar trebui să salvez fișierul în fișierele de logare ale utilizatorilor (dacă da, știți unde se află?) și când adaug :user:domainUsername îl păstrez așa sau îl înlocuiesc cu domeniul nostru și numele de utilizator? Vă mulțumesc pentru ajutor! –  > Por Bhetzie.
  • Puteți pune acest lucru test.bat oriunde doriți și DA trebuie să înlocuiți domainUsername cu domeniul și numele tău de utilizator respectiv. Am adăugat un exemplu în răspuns pentru referință. –  > Por Sunny.
  • Acesta este password pentru Username furnizat.Aceasta înseamnă că password pe care îl folosiți pentru a vă conecta la sistemul la distanță cu dat Username. –  > Por Sunny.
  • Ok, am încercat cu informațiile corecte; cu toate acestea, nu mapează unitatea. Singurul lucru care funcționează este cel pe care l-am avut inițial, dacă execut fișierul batch ca administrator –  > Por Bhetzie.
  • Chiar nu-mi place să pun parola acolo în text simplu. Asta este o problemă de securitate uriașă pentru mine. Nu există o altă modalitate mai bună? –  > Por luisdev.
Bhetzie

Tocmai mi-am dat seama! Ceea ce am făcut a fost să creez fișierul batch așa cum l-am avut inițial:

net use P: "\serverfoldernamefoldername"

Apoi l-am salvat pe desktop și am dat click dreapta pe proprietăți și am bifat run as administrator. Apoi am copiat fișierul în C:Users
TheUser”AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

Unde „TheUser” era utilizatorul la care doream să îl adaug.

Henry
@echo off
net use z: /delete
cmdkey /add:servername /user:userserver /pass:userstrongpass

net use z: \servernameuserserver /savecred /persistent:yes
set SCRIPT="%TEMP%%RANDOM%-%RANDOM%-%RANDOM%-%RANDOM%.vbs"

echo Set oWS = WScript.CreateObject("WScript.Shell") >> %SCRIPT%
echo sLinkFile = "%USERPROFILE%Desktopuserserver_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%

Comentarii

  • Bine ați venit pe Stack Overflow. Vă rugăm să faceți turul de 2 minute. În plus, deschideți Centrul de ajutor și citiți cel puțin Cum să răspundeți. Citește mai mult în Jos Votați răspunsurile „doar cod”?. –  > Por JosefZ.
  • Comanda cmdkey este piatra de temelie atunci când se ocupă de folderele partajate –  > Por ATorras.
Airton J. Colombini

Acest cod .vbs creează un fișier .bat cu unitățile de rețea actuale mapate. Apoi, trebuie doar să puneți fișierul creat în mașina pe care doriți să recreați mapările și să faceți dublu clic pe el. Acesta va încerca să creeze toate mappările folosind aceleași litere de unitate (pot apărea erori dacă orice literă este folosită). Această metodă poate fi utilizată și ca o copie de rezervă a mapărilor actuale. Salvați codul de mai jos ca fișier .vbs (de exemplu, Mappings.vbs) și faceți dublu clic pe el.


' ********** 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 & "rootcimv2")
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)

guanyuan he

Am încercat să creez un driver de rețea mapat prin „net use” cu privilegiu de administrator, dar nu am reușit, nu apare. Și dacă îl adaug prin UI, a dispărut după repornire, acum am făcut asta prin powershell. deci, cred că puteți rula scripturi powershell dintr-un fișier .bat, iar scriptul este

New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\Server01Public"

add -persist la sfârșit, veți crea o unitate de rețea mappată persistată

New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\Server01Scripts" -Persist

pentru mai multe detalii, consultați New-PSDrive – Microsoft Docs