15.11 Die Variable LOGONSERVER verwenden
 
Wenn Sie später mehrere Domänencontroller haben und der Server S1 ausfällt, so würde der Befehl \\s1\netlogon\util\ifmember.exe company\Groups\Verkauf zu einer Fehlermeldung führen. Es ist deshalb sinnvoll, statt \\S1 die Variable LOGONSERVER zu verwenden. Deren Inhalt zeigt zwei Backslashs »\\« und den Namen des Anmeldeservers an. Außerdem ist es sinnvoll und vermeidet Fehler, wenn Sie an den Anfang des Anmeldeskriptes den Befehl net use L: %LOGONSERVER%\netlogon /persistent:no stellen, weil die nachfolgenden Befehle dann kürzer ausfallen und die Gefahr von Schreibfehlern vermindert wird. Der Befehl %LOGONSERVER%\netlogon\util\ifmember.exe company\Groups\Verkauf verkürzt sich dann auf L:\util\ifmember.exe company\Groups\Verkauf. Die Routine ifmember1.cmd hat jetzt folgendes Aussehen:
net use l: %LOGONSERVER%\netlogon /persistent:no
net use g: /d
l:\util\ifmember.exe company\Verkauf
if errorlevel 1 net use g: \\s1\Groups\Verkauf /persistent:no
pause
Wenn Sie sich erneut als Testuser anmelden und der letzte Befehl pause aktiv ist, so sehen Sie einige Meldungen, die der Anwender später nicht sehen soll. Wie können diese Meldungen unterdrückt werden? Fügen Sie als erste Zeile den Befehl @echo off hinzu. Dadurch werden die Befehlszeilen selbst nicht mehr angezeigt. Dennoch sehen Sie beim nächsten Anmeldeversuch Meldungen wie Der Befehl wurde erfolgreich ausgeführt, wenn der net use-Befehl zum Erfolg führt, oder die Meldung Die Netzwerkverbindung konnte nicht gefunden werden beim Versuch, die nicht vorhandene Verbindung G: mit dem Befehl net use g: /d zu löschen. Abhilfe schaffen Sie, indem Sie an alle Befehle hinten die Zeichenfolge > NUL: 2>&1 anhängen und damit alle Systemmeldungen ins »Nirwana« umleiten:
@echo off
cls
net use l: %LOGONSERVER%\netlogon /persistent:no > NUL: 2>&1
net use g: /d > NUL: 2>&1
l:\util\ifmember.exe company\Groups\Verkauf > NUL: 2>&1
if errorlevel 1 net use g: \\s1\Groups\Verkauf
/persistent:no > NUL: 2>&1
pause
Bei der nächsten Anmeldung sehen Sie nur noch die Meldung Anmeldung an der Domaene Company.local und durch den Pause-Befehl die Zeile Drücken Sie eine beliebige Taste… Dennoch ist es für die weiteren Tests sinnvoll, die Zeile @echo off wieder auszukommentieren (rem @echo off) und vorerst auf die Umleitung der Befehlsmeldungen zu verzichten, damit Sie den Erfolg und Misserfolg der folgenden Übungen am Bildschirm sehen und die Fehlersuche leichter wird.
Wenn der Gruppenname ein Leerzeichen enthält, muss der Ausdruck »Domänenname\Gruppenname« in Anführungszeichen gestellt werden. Dasselbe gilt für Freigabenamen oder Verzeichnisnamen mit Leerzeichen:
ifmember.exe "Company\Verkauf Gruppe 1"
if errorlevel 1 net use I: "\\S1\Groups\Verkauf Gruppe 1"
In unserem Beispiel gibt es bisher im Gruppenverzeichnis GROUPS nur die vier Unterverzeichnisse »Einkauf«, »Verkauf«, »Produktion« und »Marketing«. Hätte Ihr Unternehmen eine derartig einfache Aufbauorganisation, so würde folgendes Anmeldeskript ausreichen, um jedem Mitarbeiter über das Laufwerk G: sein Gruppenverzeichnis zuzuweisen:
@echo off
cls
echo Anmeldung an der Domaene %USERDNSDOMAIN%
net use l: %LOGONSERVER%\netlogon /persistent:no
net use g: /d
l:\util\ifmember.exe company\Einkauf
if errorlevel 1 net use g: \\s1\Groups\Einkauf /persistent:no
l:\util\ifmember.exe company\Verkauf
if errorlevel 1 net use g: \\s1\Groups\Verkauf /persistent:no
l:\util\ifmember.exe company\Produktion
if errorlevel 1 net use g: \\s1\Groups\Produktion /persistent:no
l:\util\ifmember.exe company\Marketing
if errorlevel 1 net use g: \\s1\Groups\Marketing /persistent:no
Ihr Unternehmen wird jedoch vermutlich eine komplexere Aufbaustruktur haben und außerdem werden alle Mitarbeiter nicht nur auf ihr persönliches Basisverzeichnis und ein Gruppenverzeichnis zugreifen wollen, sondern auf ein gemeinsames Ablageverzeichnis des gesamten Unternehmens, auf ein gemeinsames Unterverzeichnis ihrer Abteilung, auf Projektverzeichnisse und auf öffentliche Ordner des Exchange Server. Als Folge müssten Sie sehr viele Freigaben einrichten und sehr viele ifmember-Befehle in Reihe schalten. Die Abarbeitung des Skripts wird dann länger und länger dauern. In den nachfolgenden Beispielen wird eine typische komplexe Aufbaustruktur verwendet, um Lösungsansätze darzustellen.
|