Netzlaufwerk verbinden
Übersicht
Das Skript NetUse.bat dient zur automatisierten Verbindung eines Netzlaufwerks mittels Benutzeranmeldung.
Optional können bestehende Netzlaufwerke vor der Verbindung getrennt und die Verbindung zusätzlich im administrativen Kontext hergestellt werden.
|
|
|
@echo off setlocal :: ============================================================ :: CONFIGURATION - adjust here only :: ============================================================ set "DRIVE=S:" set "SHARE=\\srvdml\dml$" set "USER=DOMAIN\User" set "DELETE_EXISTING=1" :: 1 = disconnect all existing drives first, 0 = keep them set "MAP_ADMIN=1" :: 1 = also map in the admin token, 0 = normal context only set "TITLE=Map Network Drives" set "COLOR=1F" :: ============================================================ color %COLOR% title %TITLE% echo. echo ===================================================== echo %TITLE% echo ===================================================== echo. echo Drive : %DRIVE% -^> %SHARE% echo User : %USER% echo. echo Please enter password: echo. for /f "usebackq delims=" %%i in (`powershell -NoProfile -Command "$p=Read-Host 'Password' -AsSecureString; $b=[Runtime.InteropServices.Marshal]::SecureStringToBSTR($p); [Runtime.InteropServices.Marshal]::PtrToStringAuto($b)"`) do set "PWD=%%i" :: Prepare optional cleanup command set "CLEANUP=" if "%DELETE_EXISTING%"=="1" set "CLEANUP=net use * /delete /yes >nul 2>&1" echo. echo Mapping drive in the normal user context... if defined CLEANUP %CLEANUP% net use %DRIVE% "%SHARE%" /user:%USER% %PWD% if not "%MAP_ADMIN%"=="1" goto :done echo. echo Additionally mapping drive in the administrative context... set "ELEVSCRIPT=%TEMP%\map_admin_%RANDOM%.cmd" ( echo @echo off if "%DELETE_EXISTING%"=="1" echo net use * /delete /yes ^>nul 2^>^&1 echo net use %DRIVE% "%SHARE%" /user:%USER% %PWD% ) > "%ELEVSCRIPT%" powershell -NoProfile -Command "Start-Process -FilePath '%ELEVSCRIPT%' -Verb RunAs -Wait" del "%ELEVSCRIPT%" >nul 2>&1 :done set "PWD=" echo. echo Done. pause endlocal |
Konfiguration
Die Konfiguration erfolgt direkt im Skript über folgende Variablen:
|
Parameter |
Beschreibung |
|
DRIVE |
Zu verwendender Laufwerksbuchstabe |
|
SHARE |
Netzwerkfreigabe |
|
USER |
Benutzerkonto für die Anmeldung |
|
DELETE_EXISTING |
Vorhandene Netzlaufwerke vorab trennen (1 = Ja, 0 = Nein) |
|
MAP_ADMIN |
Laufwerk zusätzlich im administrativen Kontext verbinden (1 = Ja, 0 = Nein) |
|
TITLE |
Fenstertitel |
|
COLOR |
Konsolenfarbe |
Funktionsweise
Kennwortabfrage
Beim Start fordert das Skript zur Eingabe eines Kennworts auf.
Die Eingabe erfolgt über PowerShell als verdeckte Kennworteingabe.
Das Kennwort wird anschliessend für die Netzlaufwerksverbindung verwendet.
Trennen vorhandener Netzlaufwerke
Ist die Option DELETE_EXISTING=1 aktiviert, werden vor der neuen Verbindung sämtliche bestehenden Netzlaufwerke getrennt.
Verbindung im Benutzerkontext
Das konfigurierte Netzlaufwerk wird mittels net use mit der angegebenen Freigabe und dem hinterlegten Benutzerkonto verbunden.
Verbindung im Administratorkontext
Ist die Option MAP_ADMIN=1 aktiviert, erstellt das Skript eine temporäre Batchdatei und führt diese mit Administratorrechten aus.
Dadurch wird das Netzlaufwerk zusätzlich im administrativen Kontext verbunden.
Bereinigung
Nach erfolgreicher Ausführung werden die temporäre Batchdatei sowie die im Speicher gehaltene Kennwortvariable entfernt.
Voraussetzungen
- Windows-Betriebssystem
- Netzwerkzugriff auf die konfigurierte Freigabe
- Gültige Benutzeranmeldedaten
- Administratorrechte für die optionale Laufwerksverbindung im administrativen Kontext
Ergebnis
Nach erfolgreicher Ausführung steht das konfigurierte Netzlaufwerk sowohl im Benutzerkontext als auch optional im administrativen Kontext zur Verfügung.
Abschliessend gibt das Skript eine Erfolgsmeldung aus und wartet auf eine Benutzereingabe.
