Windows Server: Verwaiste Freigaben entfernen (Server Dienst startet nicht)

Zur Abwechslung heute mal wieder ein kleines Problem. Der „Server“-Dienst auf einem Windows Server 2012 R2 Fileserver lies sich nicht mehr starten, was zur Folge hatte, das keine der Freigaben mehr erreichbar war. Im Eventlog „Anwendung“ war nur diese Warnung zu finden:

Verwaiste Freigaben

Quelle: Server

Event-ID: 2511

Der Serverdienst konnte die Freigabe Freigabename nicht wiederherstellen, da das Verzeichnis D:\Home\Freigabe nicht mehr vorhanden ist. Führen Sie den Befehl „net share Freigabe /delete“ aus, um die Freigabe zu löschen oder um das Verzeichnis D:\Home\Freigabe zu erstellen.

Es gibt also offensichtlich Freigaben die auf ein Verzeichnis zeigen, welches nicht mehr existiert. Tatsächlich wurden die betreffenden Verzeichnisse archiviert und die Freigabe nicht aufgehoben. Scheinbar haben die fehlenden Verzeichnisse den Serverdienst etwas irritiert, denn nach längerer Wartezeit, lief das Starten des Dienstes in einen  Fehler.

Schön das die Warnung im Eventlog auch gleich die Lösung angibt: net share Freigabename /delete

Etwas ungünstig war allerdings die Menge dieser Warnungen im Eventlog: 988. Es hätte also etwas länger gedauert, manuell alle Befehle aus dem Eventlog in die Kommandozeile zu kopieren und auszuführen.

Ich habe dazu ein schnelles Quick & Dirty Script erstellt, welches den „net share“ Befehl aus dem Warnungstext extrahiert und ein eine Batch-Datei kopiert:

$events = Get-EventLog -LogName System -Newest 1000 -EntryType Warning -Source Server | where {$_.eventid -match "2511"}
foreach ($event in $events)
{
 $sharepath = $event.ReplacementStrings[1]
 $testpath = test-path $sharepath
 if ($testpath -match "False")
  {
   write-warning "$sharepath existiert nicht"
   $message = $event.message
   $netcmd = $message.Split("`"")[1]
   $netcmd | add-content c:\netcmd.bat
  }
}

$csv = import-csv c:\netcmd.bat -header shares
($csv | group shares).name  | set-content c:\netcmd.bat

Das kleine Script holt sich die Warnungen aus dem Eventlog und extrahiert den „net share“-Befehl und kopiert ihn in die Datei „c:\netcmd.bat“:

3

4

Die Batch Datei lässt sich dann einfach ausführen und entfernt die fehlerhaften Freigaben. Der Server Dienst lies sich nach dem Bereinigen direkt wieder starten. Ich habe später das Script noch etwas angepasst: Doppelte Einträge werden entfernt und es wird geprüft, ob das Verzeichnis wirklich entfernt wurde.

Vieleicht hilft es ja dem ein oder anderen.

2 Gedanken zu „Windows Server: Verwaiste Freigaben entfernen (Server Dienst startet nicht)“

Schreibe einen Kommentar