Netzlaufwerke im Logonscript trennen und anderes LW verbinden
Hallo zusammen,
da dies mein erster Beitrag ist stelle ich mich mal kurz vor: Ich bin Rolf, 31 Jahre aus Hamburg und arbeite in einem Mittelständischen Unternehmen im Support, wobei wir auch öfters administrative Aufgaben übertragen bekommen.
Mein Problem ist folgendes:
Aufgrund von Umstrukturierungen werden bei uns Fileserver und darauf liegende Shares umbenannt.
Ist: \\ serverA \ shareA
Soll: \\ serverB \ shareB
Die Inhalte der Shares werden dabei 1:1 übernommen.
Da wir auf den Shares z.T. Vorlagen liegen haben (und z.B. Word über den LW-Buchstaben auf die Vorlagen zugreift) möchte ich folgendes per (Anmelde-)Skript lösen.
Vor der Umstellung:
- Beim ausführen des Skriptes soll ausgelesen werden welches Netzlaufwerk auf welchen Buchstaben verbunden ist, diese Information muss irgendwie festgehalten werden
Nach der Umstellung
- Beim ausführen des Skriptes soll die festgehaltene Information mit einer Übersetzungstabelle (?) abgeglichen werden und das korrespondierende, neue Netzlaufwerk auf den selben Buchstaben verbunden werden wie das alte vorher
Ich hoffe das ist nicht zu kompliziert beschrieben, ich versuche mal eine Kurzversion:
Anmeldung vor Umstellung -> Netz-LW's + LW-Buchstaben merken -> Shares umbenennen -> Anmeldung nach Umstellung -> Skript shaut nach User hatte auf F:\ das LW \\ServerA\ShareA also verbinde ich auf F:\ \\ServerB\ShareB
Folgendes Skript habe ich hier im Forum gefunden um gleich gebliebene Netzlaufwerke auf den selben Buchstaben wie vor der Trennung zu verbinden und ich denke es bietet eine gute Grundlage:
Für jeden Tip, Link, Hilfe und Information bin ich schon jetzt sehr dankbar!
Viele Grüße
Rolf
da dies mein erster Beitrag ist stelle ich mich mal kurz vor: Ich bin Rolf, 31 Jahre aus Hamburg und arbeite in einem Mittelständischen Unternehmen im Support, wobei wir auch öfters administrative Aufgaben übertragen bekommen.
Mein Problem ist folgendes:
Aufgrund von Umstrukturierungen werden bei uns Fileserver und darauf liegende Shares umbenannt.
Ist: \\ serverA \ shareA
Soll: \\ serverB \ shareB
Die Inhalte der Shares werden dabei 1:1 übernommen.
Da wir auf den Shares z.T. Vorlagen liegen haben (und z.B. Word über den LW-Buchstaben auf die Vorlagen zugreift) möchte ich folgendes per (Anmelde-)Skript lösen.
Vor der Umstellung:
- Beim ausführen des Skriptes soll ausgelesen werden welches Netzlaufwerk auf welchen Buchstaben verbunden ist, diese Information muss irgendwie festgehalten werden
Nach der Umstellung
- Beim ausführen des Skriptes soll die festgehaltene Information mit einer Übersetzungstabelle (?) abgeglichen werden und das korrespondierende, neue Netzlaufwerk auf den selben Buchstaben verbunden werden wie das alte vorher
Ich hoffe das ist nicht zu kompliziert beschrieben, ich versuche mal eine Kurzversion:
Anmeldung vor Umstellung -> Netz-LW's + LW-Buchstaben merken -> Shares umbenennen -> Anmeldung nach Umstellung -> Skript shaut nach User hatte auf F:\ das LW \\ServerA\ShareA also verbinde ich auf F:\ \\ServerB\ShareB
Folgendes Skript habe ich hier im Forum gefunden um gleich gebliebene Netzlaufwerke auf den selben Buchstaben wie vor der Trennung zu verbinden und ich denke es bietet eine gute Grundlage:
@echo off
for /f "tokens=2,3 delims= " %%i in ('net use') do (
net use %%i /delete
net use %%i "%%j%"
)
Für jeden Tip, Link, Hilfe und Information bin ich schon jetzt sehr dankbar!
Viele Grüße
Rolf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 124026
Url: https://administrator.de/forum/netzlaufwerke-im-logonscript-trennen-und-anderes-lw-verbinden-124026.html
Ausgedruckt am: 24.05.2025 um 22:05 Uhr
14 Kommentare
Neuester Kommentar
Hallo Rohabu und willkommen im Forum!
Das Zwischenspeichern der aktuellen Zuordnung (mit der Filterung nach ":" werden nur Mappings auf Laufwerksbuchstaben erfasst), könntest Du als Batch so machen:
Damit wird am Server (entsprechende Rechte für den User vorausgesetzt) für jeden User eine Textdatei mit seinen aktuellen Einstellungen hinterlegt (alternativ könnte hier auch ein Speicherort im Profil des Users verwendet werden - die "Sammelvariante" hätte aber vielleicht den Vorteil, dass Du Dir einen Überblick über die Mappings aller User verschaffen kannst).
Zum Wiederherstellen brauchst Du dann eine Zuordnungstabelle (im Beispiel unten "\\Server\Share$\Zuordnungstabelle.txt") mit je einer Zuordnung pro Zeile:
Der Batch zum Umstellen könnte dann so aussehen:
Allerdings böte sich bei diesem Anlass vielleicht auch eine Gelegenheit, auf dynamisches Mapping (per Logon-Script mit
Grüße
bastla
[Edit] ">" im Auslesebatch nachgetragen [/Edit]
Das Zwischenspeichern der aktuellen Zuordnung (mit der Filterung nach ":" werden nur Mappings auf Laufwerksbuchstaben erfasst), könntest Du als Batch so machen:
@echo off & setlocal
for /f "tokens=2,3" %%i in ('net use^|findstr ":"') do >>"\\Server\Share$\%username%-Mapping.txt" echo %%i=%%j
Zum Wiederherstellen brauchst Du dann eine Zuordnungstabelle (im Beispiel unten "\\Server\Share$\Zuordnungstabelle.txt") mit je einer Zuordnung pro Zeile:
\\ServerA\ShareA=\\ServerB\ShareB
Der Batch zum Umstellen könnte dann so aussehen:
@echo off & setlocal
if not exist "\\Server\Share$\%username%-Mapping.txt" goto :eof
net use * /d /y>nul
for /f "usebackq tokens=1,2 delims==" %%i in ("\\Server\Share$\%username%-Mapping.txt") do set "Old=%%j" & call :ProcessMapping %%i
del "\\Server\Share$\%username%-Mapping.txt"
goto :eof
:ProcessMapping
for /f "tokens=1,2 delims==" %%a in ('findstr /i /b "%Old:\=\\%=" "\\Server\Share$\Zuordnungstabelle.txt"') do net use %1 %%b
goto :eof
Allerdings böte sich bei diesem Anlass vielleicht auch eine Gelegenheit, auf dynamisches Mapping (per Logon-Script mit
/p:no
) umzustellen - damit könnten dann auch gleich Laufwerksbuchstaben zB innerhalb einer Abteilung vereinheitlicht werden ...Grüße
bastla
[Edit] ">" im Auslesebatch nachgetragen [/Edit]
Hallo Rohabu!
Da fehlte noch ein ">" - ist jetzt oben nachgetragen.
Vermutlich wirst Du diesen Batch über einige Tage als Logon-Script laufen lassen, um alle User zu "erwischen" - in diesem Fall wäre es sinnvoll, eine ev schon bestehende Datei jeweils neu erstellen zu lassen, damit Du den "Letztstand" vorfindest - dann brauchst Du aber vorweg noch ein "greypetersches" (manchmal mag man(n)'s minimalistisch
)
Grüße
bastla
Da fehlte noch ein ">" - ist jetzt oben nachgetragen.
Vermutlich wirst Du diesen Batch über einige Tage als Logon-Script laufen lassen, um alle User zu "erwischen" - in diesem Fall wäre es sinnvoll, eine ev schon bestehende Datei jeweils neu erstellen zu lassen, damit Du den "Letztstand" vorfindest - dann brauchst Du aber vorweg noch ein "greypetersches" (manchmal mag man(n)'s minimalistisch
del "\\Server\Share$\%username%-Mapping.txt" 2>nul
bastla

Hi,
bastla hatte dir aber
geraten und sein Script auch entsprechend aufgebaut.
Wenn du wissen möchtest, was übersetzt wird und warum offenbar Fehler auftreten, kannst du einfach die Zeilen 8-10 ersetzen durch
ersetzen. 
Meine Umsetzungstabelle sieht schematisch wie folgt aus
\\Server\Share \\ServerNeu\ShareNeu
bastla hatte dir aber
Zum Wiederherstellen brauchst Du dann eine Zuordnungstabelle (im Beispiel unten "\\Server\Share$\Zuordnungstabelle.txt") mit je einer Zuordnung pro Zeile:
\\ServerA\ShareA=\\ServerB\ShareB
\\ServerA\ShareA=\\ServerB\ShareB
geraten und sein Script auch entsprechend aufgebaut.
Wenn du wissen möchtest, was übersetzt wird und warum offenbar Fehler auftreten, kannst du einfach die Zeilen 8-10 ersetzen durch
:ProcessMapping
@echo on
for /f "tokens=1,2 delims==" %%a in ('findstr /i /b "%Old:\=\\%=" "\\Server\Share$\Zuordnungstabelle.txt"') do net use %1 %%b
pause
@echo off
goto :eof
Hallo Rohabu!
Lässt sich:
Nur aus reiner Neugier: Wozu diese Einschränkung?
Grüße
bastla
Lässt sich:
@echo off & setlocal
if not exist "\\Server\Share$\%username%-Mapping.txt" goto :eof
for /f "usebackq tokens=1,2 delims==" %%i in ("\\Server\Share$\%username%-Mapping.txt") do set "Old=%%j" & call :ProcessMapping %%i
del "\\Server\Share$\%username%-Mapping.txt"
goto :eof
:ProcessMapping
for /f "tokens=1,2 delims==" %%a in ('findstr /i /b "%Old:\=\\%=" "\\Server\Share$\Zuordnungstabelle.txt"') do (
net use %1 /d /y>nul
net use %1 %%b
)
goto :eof
Grüße
bastla

<OT>
Hallo, bastla,
aber zumindest habt ihr mal darüber gesprochen, das ist doch auch was.
Grüße
greypeter
</OT>
Hallo, bastla,
aber zumindest habt ihr mal darüber gesprochen, das ist doch auch was.
Grüße
greypeter
</OT>