Auf dem Arbeitsplatz einer Mitarbeiterin eines Kunden wurde seit kurzem ein bestimmtes Netzlaufwerk nicht immer beim Start verbunden. Es wurden drei bis zehn Neustarts benötigt.

Alle anderen Netzlaufwerke und auch sonst alles was irgendwie mit Netzwerk zu tun hat funktionierte wie es sollte. Zuerst wurde mittels Gruppenrichtlinie konfiguriert, das beim Start und dem Ausführen des Anmeldeskript auf das Netzwerk gewartet werden soll, das half allerdings nicht.

Um der Sache weiter auf den Grund zu gehen wurde das Anmeldeskript dahingehend erweitert, das die Ausgaben der net use (und weiterer Befehle) in eine lokale Datei umgeleitet wird, auf diese Weise konnte zum einen geklärt werden ob dieses überhaupt ausgeführt wird und was es ggf. für (Fehler-)Meldungen gibt.

Nach ein wenig hin und her fanden sich gleich mehrere Treffer:

Da gab es mal die Meldung

Das Gerät ist nicht bereit.

oder

Systemfehler 85 aufgetreten.

Der lokale Gerätename wird bereits verwendet.

Gerade die letzte Meldung beschreibt recht treffend was los ist. Kurzum: Der Laufwerksbuchstabe ist bereits belegt, aber nicht von einem Netzlaufwerk, im Explorer war zudem ebenfalls nichts zu sehen. Erst ein Blick in die Datenträgerverwaltung offenbarte was los ist:

Ein Kartenleser (CardReader) belegt selbst wenn kein Medium (Speicherkarte) eingelegt ist bereits den Laufwerksbuchstaben, der eigentlich für das Netzlaufwerk vorgesehen ist.

Fragt man allerdings via Eingabeaufforderung oder Batch-Skript ab, ob es dieses Laufwerk gibt, erhält man sozusagen eine falsche Antwort:

Die Lösung ist relativ einfach: In der Datenträgerverwaltung dem Kartenleser einen anderen Laufwerksbuchstaben zuweisen und beim nächsten Neustart klappt dann das Verbinden des Netzlaufwerks wieder.

Per Batch-Skript lässt sich über den mountvol-Befehl eine Abfrage bauen, ob der Laufwerksbuchstabe bereits belegt ist. Ein Beispiel:

mountvol | find /i "M:"

if %errorlevel%==0 (
 echo Bitte den USB-Stick oder Cardreader entfernen.
 pause
 net use ...
)