Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Netzlaufwerke im Logonscript trennen und anderes LW verbinden

Frage Entwicklung Batch & Shell

Mitglied: Rohabu

Rohabu (Level 1) - Jetzt verbinden

02.09.2009, aktualisiert 18.10.2012, 6172 Aufrufe, 14 Kommentare, 1 Danke

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:

01.
@echo off 
02.
 
03.
for /f "tokens=2,3 delims= " %%i in ('net use') do ( 
04.
net use %%i /delete  
05.
net use %%i "%%j%"  
06.
)
Für jeden Tip, Link, Hilfe und Information bin ich schon jetzt sehr dankbar!

Viele Grüße
Rolf
Mitglied: bastla
02.09.2009 um 12:55 Uhr
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:
01.
@echo off & setlocal 
02.
for /f "tokens=2,3" %%i in ('net use^|findstr ":"') do >>"\\Server\Share$\%username%-Mapping.txt" echo %%i=%%j
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:
\\ServerA\ShareA=\\ServerB\ShareB
Der Batch zum Umstellen könnte dann so aussehen:
01.
@echo off & setlocal 
02.
if not exist "\\Server\Share$\%username%-Mapping.txt" goto :eof 
03.
net use * /d /y>nul 
04.
for /f "usebackq tokens=1,2 delims==" %%i in ("\\Server\Share$\%username%-Mapping.txt") do set "Old=%%j" & call :ProcessMapping %%i 
05.
del "\\Server\Share$\%username%-Mapping.txt" 
06.
goto :eof 
07.
 
08.
:ProcessMapping 
09.
for /f "tokens=1,2 delims==" %%a in ('findstr /i /b "%Old:\=\\%=" "\\Server\Share$\Zuordnungstabelle.txt"') do net use %1 %%b 
10.
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]
Bitte warten ..
Mitglied: Rohabu
02.09.2009 um 14:25 Uhr
Hallo bastla!

Erstmal herzlichen Dank für deine Willkommensgrüße und deine ausführliche Antwort.

Beim Skript zum auslesen der bestehenden Netzlaufwerke habe ich noch ein Problem.
Das Skript schreibt mir nur das vom Laufwerksbuchstaben her gesehen letzte Laufwerk in die xyz-mappings.txt, alle weitreren verbundenen Netzlaufwerke werden ignoriert.

Muss ich das Skript evtl. mit einer Schleife laufen lassen?
Bitte warten ..
Mitglied: bastla
02.09.2009, aktualisiert 18.10.2012
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 )
del "\\Server\Share$\%username%-Mapping.txt" 2>nul
Grüße
bastla
Bitte warten ..
Mitglied: Rohabu
03.09.2009 um 12:17 Uhr
Hallo bastla,

Vielen Dank für deine erneute Antwort!

Das erstellen der Datei mit den bisherigen Zuordnungen klappt jetzt perfekt!

Ich habe noch ein Problem beim herstellen der neuen Mappings. Die alten Mappings werden gelöscht und die Datei für die Mappings wird gelöscht, es werden allerdings keine neuen Mappings erstellt.

Meine erste Vermutung war das das Skript aus irgendeinem Grund nicht in die "ProcessMapping" Prozedur springt, ich habe in dieser Prozedur aber mal ein:

01.
ECHO ProcessMapping betreten 
02.
PAUSE
eingefügt und dies wird beim ausführen des Skriptes auch angesprungen.

Hast du hier AdHoc nocch eine Idee was ich weiter prüfen kann?

Meine Umsetzungstabelle sieht schematisch wie folgt aus

\\Server\Share \\ServerNeu\ShareNeu
Bitte warten ..
Mitglied: 81825
03.09.2009 um 12:31 Uhr
Hi,

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

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
01.
:ProcessMapping 
02.
@echo on 
03.
for /f "tokens=1,2 delims==" %%a in ('findstr /i /b "%Old:\=\\%=" "\\Server\Share$\Zuordnungstabelle.txt"') do net use %1 %%b 
04.
pause 
05.
@echo off 
06.
goto :eof
ersetzen.
Bitte warten ..
Mitglied: Rohabu
03.09.2009 um 13:15 Uhr
Hallo greypeter,

Vielen Dank für den Hinweis, ich hatte die Gleichheitszeichen tatsächlich vergessen, habe Sie aber jetzt nachgetragen und am Verhalten des Skriptes ändert sich leider nichts, der Sprung in die Prozedur "ProcessMapping" findet nach wie vor statt, es wird aber nichts verbunden.

Kann man sich aus dem Skript evtl. auftretende Fehlermeldungen ausspucken lassen oder sinnvolle Haltepunkte setzen?

//Edit: Ich probiere es mal mit der von dir vorgeschalgenen Aktivierung der Ausgaben über ECHO ON, Danke!
Bitte warten ..
Mitglied: Rohabu
03.09.2009 um 16:40 Uhr
So, das Problem habe ich gelöst.

Es lag an einem Fehler beim net use Kommando (Fehler 59: Ein an das System angeschlossenes Gerät ist nicht bereit), ich habe jetzt ein:

ping localhost -n 2 > NUL

als erstes Kommando im ProcessMapping Code eingefügt, damit funktioniert es. Dafür schonmal 1000 Dank!!!

Eine Zusatzfrage habe icch aber noch: Lässt sich das Skript auch so gestalten das nicht alle Netzlaufwerke getrennt werden, sondern nur diejenigen welche auch durch ein neues ersetzt werden?
Bitte warten ..
Mitglied: bastla
03.09.2009 um 18:22 Uhr
Hallo Rohabu!

Lässt sich:
01.
@echo off & setlocal 
02.
if not exist "\\Server\Share$\%username%-Mapping.txt" goto :eof 
03.
for /f "usebackq tokens=1,2 delims==" %%i in ("\\Server\Share$\%username%-Mapping.txt") do set "Old=%%j" & call :ProcessMapping %%i 
04.
del "\\Server\Share$\%username%-Mapping.txt" 
05.
goto :eof 
06.
 
07.
:ProcessMapping 
08.
for /f "tokens=1,2 delims==" %%a in ('findstr /i /b "%Old:\=\\%=" "\\Server\Share$\Zuordnungstabelle.txt"') do ( 
09.
    net use %1 /d /y>nul 
10.
    net use %1 %%b 
11.
12.
goto :eof
Nur aus reiner Neugier: Wozu diese Einschränkung?

Grüße
bastla
Bitte warten ..
Mitglied: Rohabu
04.09.2009 um 08:32 Uhr
Guten Morgen bastla!

Echt Klasse vielen Dank!

Die Einschränkung ist dafür gut das Leute die Laufwerke verbunden haben die nicht umbenannt werden, sich diese nicht neu verbinden müssen.

Vielen Dank & Viele Grüße
Rohabu
Bitte warten ..
Mitglied: bastla
04.09.2009 um 15:17 Uhr
Hallo Rohabu!

Stimmt - Du hattest ja nicht geschrieben dass alleFileserver und darauf liegende Shares umbenannt würden - insofern war meine Frage eher wenig sinnvoll ...

Grüße
bastla
Bitte warten ..
Mitglied: 81825
04.09.2009 um 15:33 Uhr
<OT>
Hallo, bastla,
aber zumindest habt ihr mal darüber gesprochen, das ist doch auch was.

Grüße
greypeter
</OT>
Bitte warten ..
Mitglied: Rohabu
18.09.2009 um 15:25 Uhr
Hallo nochmal zusammen,

sorry wenn ich das Thema nochmal ausgrabe, aber meine Frage bezieht sich direkt auf diese genial funktionierende Lösung

Ich würde gern ein Logging mit in das Skript einbauen welches mir für jeden User auf einem Share eine Datei ablegt in der drin steht welches Laufwerk auf welchen Buchstaben neu verbunden wurde.

Der entsprechende Code müsste ja sicher in der Routine :ProcessMapping stehen, ich habe es an der Stelle probiert wo es unten steht, meine Frage ist nur - welche Variablen für LW-Buchstabe und UNC Pfad des neuverbundenen Laufwerks benutzen?

Ich habe es mit z.B.

01.
  
02.
echo > \\Share\Server\%username%_mappings.txt Auf dem Buchstaben %1 befindet sich jetzt das Laufwerk %%b


probiert, dies schreibt aber tatsächlich die Variablennamen und nicht die Werte in die Textdatei.

01.
  
02.
 :ProcessMapping 
03.
 for /f "tokens=1,2 delims==" %%a in ('findstr /i /b 
04.
 "%Old:\=\\%=" 
05.
 "\\Server\Share$\Zuordnungstabelle.txt"') do ( 
06.
     net use %1 /d /y>nul 
07.
     net use %1 %%b 
08.
     echo > \\Share\Server\%username%_mappings.txt [Hier weiß ich nicht weiter] 
09.
10.
 goto :eof 
11.
 
Hat diesbezüglich vieleicht noch jemand einen Tip für mich?

Ich wünsche schonmal allseits ein schönes Wochenende!

Gruß
Rohabu
Bitte warten ..
Mitglied: bastla
18.09.2009 um 15:38 Uhr
Hallo Rohabu!

Versuch es mit der folgenden Zeile:
>>\\Share\Server\%username%_mappings.txt echo %1 %%b
Grüße
bastla
Bitte warten ..
Mitglied: Rohabu
18.09.2009 um 15:52 Uhr
Hallo bastla,

wieder einmal vielen Dank für die schnelle Antwort!

Funktioniert perfekt!

Schönes Wochenende!
Bitte warten ..
Ähnliche Inhalte
Microsoft
Netzlaufwerke trennen sich nach bestimmter Zeit und verbinden sich automatisch wieder
gelöst Frage von itsa99Microsoft5 Kommentare

Hallo Leute, wir haben bei unserer Umgebung mit Win 8.1 und Server 2012R2 das Problem, dass sich die Netzlaufwerke ...

Windows Server
Netzlaufwerke verbinden sich nicht
Frage von MyBRis4ShotWindows Server6 Kommentare

Hallo, wie der Titel schon sagt, habe ich aktuell Probleme mit dem automatischen Verbinden von Netzlaufwerken. Der Kunde arbeitet ...

Windows Netzwerk
Ungenutzte Netzlaufwerke per GPO trennen?
gelöst Frage von LethorqtWindows Netzwerk7 Kommentare

Hallo, ich hab eine Simple frage: Wenn ein Nutzer mehrere Netzlaufwerke hat, die sich zum beispiel durch verschieben in ...

SAN, NAS, DAS
ISCSI trennen und wieder verbinden per Batch
Frage von schrodtiSAN, NAS, DAS1 Kommentar

Hallo Zusammen, gibt es eine Möglichkeit ein gemapptes iSCSI Target, welches über den MS iSCSI Initiator eingebunden ist, per ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 6 StundenBatch & Shell7 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 8 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Batch & Shell
Neuste Datei via PowerShell kopieren
gelöst Frage von kaiuwe28Batch & Shell11 Kommentare

Hallo zusammen, ich hatte mir mit Hilfe der Suche im Forum einen kleinen Code von colinardo rausgesucht und versucht ...