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.


  NetUse.bat  

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