Netzwerk-Basisordner per GPO? Auch offline schnell genug!

mx_microsoft_border

Werden mehrere Netzlaufwerke per Group Policy verbunden, funktioniert alles gut, solange der Laptop im Netzwerk mit dem Fileserver verbunden ist.

Doch sobald der Laptop keine Netzwerk-Verbindung herstellen kann, wird das Hochfahren zu einer Qual:
Der Laptop wartet, ob nicht doch eine Netzwerkverbindung aufgebaut werden kann und verzögert so die Zeit, bis sich der Benutzer anmelden kann.

Sofern nichts anderes konfiguriert wurde, beträgt die Standardeinstellung für die Wartezeit für die Richtlinienverarbeitung beim Systemstart 30 Sekunden – viel zu lange, wenn der Benutzer gerade beim Kunden ist und sein System startet. Verfügt der Benutzer ein servergespeichertes Benutzerprofil, verlängert sich die Wartezeit um weitere 30 Sekunden (sofern die Standardeinstellung nicht verändert wurde).

Die Standardwerte sollten NICHT verändert werden, um dieses Problem zu lösen, da die Änderung der Werte Einfluss auf andere Gruppenrichtlinien haben kann. Beispielsweise wird durch das Heruntersetzen der Wartezeit für die Richtlinienverarbeitung beim Systemstart die Verteilung von Software über Gruppenrichtlinien unmöglich.

Wie man den Basisordner performant per Gruppenrichtlinie einbindet, erfahren Sie in diesem Artikel.

Die Herausforderung

  • Alle Netzlaufwerke sollen per Gruppenrichtlinie verbunden werden
  • Als Basisordner dient ein Netzlaufwerk
  • Falls sich der Laptop nicht im Netzwerk befindet, darf es nicht zu außergewöhnlich langen Anmeldezeiten kommen

Wie vermeide ich unnötig lange Anmeldezeiten wenn der Server nicht verfügbar ist?

Standard-Netzlaufwerke

Damit der Client nicht zu lange auf die Netzwerkverbindung wartet, um die Netzlaufwerke zu verbinden, ist der Trick von Martin Binder sehr hilfreich:

Per Item Level Targeting kann man per WMI-Abfrage testen, ob eine Verbindung zum Fileserver besteht. Um die Verbindung zu testen wird ein Ping ausgeführt. Wird dieser erfolgreich ausgeführt, wird das Laufwerk verbunden. Schlägt er fehl, weil keine Netzwerkverbindung besteht, wird das Einbinden des Netzwerkordners abgebrochen und das nächste Gruppenrichtlinien-Element wird verarbeitet.

Dadurch, dass nun nur noch ein einzelner Ping ausgeführt wird, kann man so den Standardwert für die Wartezeit umgehen und so den Wert von mindestens 30 Sekunden auf 1 Sekunde Ping-Timeout herunter setzen.

Basis-Ordner als Netzlaufwerk

Der Basis-Ordner wird gewöhnlicherweise in den Active Directory Eigenschaften des Benutzers festgelegt. Dient ein Netzlaufwerk als Basisordner, kann man diesen über die Option „Verbinden von“ konfigurieren.

2016-02-02 17_35_00-mRemoteNG - confCons.xml

Doch ein Basisordner, der auf dem Fileserver liegt, ist auch ein Netzlaufwerk, das lange Anmeldezeiten verursachen kann – ein Netzlaufwerk, mit dem zusätzlich bestimmte Umgebungsvariablen sowie Registry-Werte gesetzt werden.

Noch dazu ist es sehr aufwändig und fehleranfällig, den Basis-Ordner bei jedem Benutzer manuell zu konfigurieren.

Man kann zwar bei mehreren Benutzern gleichzeitig den Basis-Ordner konfigurieren, indem man diese markiert und die Eigenschaften der markierten Benutzern bearbeitet. Sobald aber neue Benutzer einzeln angelegt werden, kann es passieren, dass diese Konfiguration vergessen oder übersehen wird.

Eine Gruppenrichtlinie, um den Basisordner zu konfigurieren, gibt es erst ab Windows 8 (für Windows 7 gibt es diese Einstellung noch nicht):
Computerkonfiguration > Richtlinien > Administrative Vorlagen > System > Benutzerprofile  > Basisordner für Benutzer festlegen

Bei dieser Gruppenrichtlinie besteht allerdings auch nicht die Möglichkeit, zu testen, ob das Netzwerk verfügbar ist. Bevor man versucht, den Basisordner einzubinden. Daher eignet sich die Lösung auch für mobile Systeme ab Windows 8.

Der Basisordner

Damit ein Basis-Ordner von Programmen erkannt und genutzt werden kann, reicht es nicht aus, den Ordner nur einzubinden: Auch bestimmte Umgebungsvariablen sowie Registry-Einträge müssen gesetzt werden, damit das System den eingebundenen Ordner als Basis-Ordner anerkennt.

Um festzustellen, welcher Ordner als Basis-Ordner gesetzt wurde, kann man auf der Kommandozeile mit dem Befehl set home herausfinden:

bearb_2016-02-02 10_32_53-C__Windows_system32_cmd.exe

In dieser Ansicht sieht man die Standardkonfiguration des Basis-Ordners: Es wurde noch kein Netzlaufwerk eingetragen oder der Computer ist nicht mit dem Netzwerk, in dem der Fileserver steht, verbunden.

Erstellung der Gruppenrichtlinie

Loopback

Damit die Gruppenrichtlinie für Computer-OUs gültig ist und die Variable %LogonUser% richtig interpretiert werden kann, muss der Loopbackverarbeitungsmodus aktiviert werden:

Computerkonfiguration > Richtlinien > Administrative Vorlagen > System > Gruppenrichtlinie > Loopbackverarbeitungsmodus für Benutzergruppenrichtlinie konfigurieren

  • Aktiviert
  • Modus: Ersetzen

Netzlaufwerk

Der zukünftige Basisordner wird zunächst als Netzlaufwerk per Group Policiy Preferences (GPP) eingebunden:
Benutzerkonfiguration > Einstellungen > Windows Einstellungen > Laufwerkzuordnung

Hier legt man ein neues Laufwerk an:

  • Aktion: Ersetzen
  • Verbindung wiederherstellen: Ja
  • Beschriften als: Home
  • Laufwerkbuchstabe – Verwenden: H

bearb_2015-12-18 15_26_57-mRemoteNG - confCons.xml

Damit das Anmelden schnell geht, selbst wenn keine Netzwerkverbindung zum Fileserver besteht, kann man per Item Level Targeting (Zielgruppenadressierung) testen, ob eine Verbindung besteht und im Fehlerfall das Einbinden des Netzlaufwerks überspringen.

Hierzu wählt man den Reiter Gemeinsame Optionen aus, hakt die Option „Zielgruppenadressierung auf Elementebene“ an und klickt auf den Button „Zielgruppenadressierung…“

2015-12-18 15_27_49-mRemoteNG - confCons.xml

Hier wählt man „Neues Element“ und wählt eine neue WMI-Abfrage als Grundlage.

bearb_2015-12-18 15_29_04-mRemoteNG - confCons.xml

  • Abfrage: select * from win32_Pingstatus where address=“<Fileserver>“ and statuscode=0
  • Namespace: Root\cimv2

Durch diese Abfrage wird ein einzelner Ping an den eingetragenen Fileserver abgesendet. Falls dieser nicht positiv beantwortet wird (statuscode=0), wird das Einbinden des Netzlaufwerks übersprungen und die nächste Gruppenrichtlinie wird abgearbeitet. Somit gibt es keine langen Wartezeiten beim Einbinden des Basisordners, falls das Netzwerk nicht vorhanden ist.

Umgebungsvariablen

Bei der Konfiguration eines Basisordners müssen noch verschiedene Umgebungsvariablen gesetzt werden, damit diese für programmspezifische Aktionen verwendet werden können.

Diese kann man durch ein kleines Script setzen, welches man unter Benutzerkonfiguration > Richtlinien > Windows-Einstellungen > Scripts (Anmelden/Abmelden) > Anmelden konfigurieren kann.

Inhalt des hinterlegten Scripts:

Das Script wird als .bat-Datei angelegt und abgespeichert.

Wichtig hier ist, dass setx verwendet wird und nicht nur set, da die mit set gesetzten Umgebungsvariablen wieder verworfen werden, sobald die geöffnete Shell wieder geschlossen wird. Mit setx gesetzte Variablen werden beibehalten, auch wenn die Shell geschlossen wird.

Registry Einträge

Damit die Umgebungsvariablen nicht mit den Werten aus der Registry überschrieben werden, müssen noch ein paar Registry-Schlüssel gesetzt werden. Umgebungsvariablen und Registry-Werte überschreiben sich gegenseitig, sofern nicht beide explizit gesetzt wurden.

Die Einstellung findet man in der Gruppenrichtlinie unter Benutzerkonfiguration > Einstellungen > Windows Einstellungen > Registrierung.

HomeDrive

2016-02-02 17_22_58-mRemoteNG - confCons.xml

  • Werttyp: REG_SZ
  • Schlüsselpfad: HKEY_CURRENT_USER\Volatile Environment\HOMEDRIVE
  • Wert: H:
Homepath

2016-02-02 17_23_52-mRemoteNG - confCons.xml

  • Werttyp: REG_SZ
  • Schlüsselpfad: HKEY_CURRENT_USER\Volatile Environment\HOMEPATH
  • Wert: \
Homeshare

bearb_2016-02-02 17_24_19-mRemoteNG - confCons.xml

  • Werttyp: REG_SZ
  • Schlüsselpfad: HKEY_CURRENT_USER\Volatile Environment\HOMESHARE
  • Wert: \\Path\to\Fileserver\%LogonUser%

Wurde der Basis-Ordner richtig gesetzt?

Nach Anwendung der Gruppenrichtlinie sollte man kontrollieren, ob der Basis-Ordner richtig gesetzt wurde. Dies kann man in der Kommandozeile mit „set home“ herausfinden.

Wurden alle konfigurierten Umgebungsvariablen übernommen, hat die Einbindung des Netzwerk-Basisordners wie gewünscht funktioniert.

bearb_2016-02-03 18_49_42-C__Windows_system32_cmd.exe

*Bei Windows 8.1 und Windows 10 kann es passieren, dass die richtigen Variablen erst dann angezeigt werden, nachdem man die Kommandozeile in einer Administrator-Shell geöffnet hat.

 

-xyra
http://miriamxyra.com – Miriam Wiesner

Miriam Wiesner

Miriam Wiesner arbeitet seit Dezember 2013 für die teamix GmbH. Dort war sie zunächst als System Engineer für die internen Systeme verantwortlich. Aktuell ist sie als Consultant mit Fokus auf IT-Security tätig. Neben der Consulting-Tätigkeit führt sie IT-Sicherheit Audits und Penetrationstests durch, um Kundensysteme auf potentielle Schwachstellen zu prüfen. Vor ihrer Zeit bei teamix konnte sie bereits Erfahrungen als Systemadministrator sowie als Softwareentwickler sammeln.

 
Kommentare

Noch keine Kommentare vorhanden.

Hinterlassen Sie einen Kommentar