Logon-Script: Gruppenmitgliedschaften per Batch auswerten

Ab und zu ist es hilfreich, Laufwerksverbindungen (oder ähnliches) anhand von ActiveDirectoy Gruppenmitgliedschaften einzurichten. Ist ein Benutzer Mitglied einer Gruppe soll er ein Laufwerk bekommen, ist er das nicht (mehr) soll das Laufwerk wieder verschwinden. Dieser Batch Script-Schnipsel übernimmt das:

REM ================================================================
REM /*
REM    Laufwerk X: - Gruppe "MP3-Sammlung"
REM */

net user /domain %username% | find/i "MP3-Sammlung"
if errorlevel 1 (
REM ----- Dieser Teil wird ausgefuert wenn NICHT Mitglied der Gruppe
net use x: /delete
) else (
REM ----- Dieser Teil wird ausgefuert wenn Mitglied der Gruppe
net use x: \servermp3sammlung
)

REM ================================================================

Windows Server 2008R2 mit Windows 7 Bug (CIFS)

Da dieser Bug mit einem „simple Workaround“ behoben werden kann, wird dieser Fehler vermutlich nie endgültig gefixt. Da das Problem beständig auftritt hier die Beschreibung und Lösung.

Seit geraumer Zeit ist es möglich, NTFS-Volumen in leere Ordner eines anderen NTFS-Volumens bereitzustellen. Das kann man aus verschiedenen Gründen tun, oft sieht man so eine Konstellation bei Fileservern die zwar eine einzelne Freigabe (oder einen großen DFS-Stamm) anbieten, diesen aber wegen der Fragmentierung, I/O-Last, Quoten oder Skalierungsproblemen auf mehrere LUNs (bzw. Laufwerke) aufteilen.

Der Fehler liegt nun im Windows 7 Explorer: Verbindet sich ein Client so eine Freigabe nun als Netzwerklaufwerk, verschwinden die bereitgestellten Ordner-Volumen darin sporadisch aus der Inhaltsansicht. Die Ordner mit den Volumen sind spontan einfach nicht mehr sichtbar. Der Zugriff ist (z.B. durch Pfadeintippen) noch möglich, aber die Ordner werden nicht mehr aufgelistet. Alle Programm die diese API verwenden (ja, auch die Shell und die Powershell) „sehen“ den Ordner nicht. Der Effekt ist reproduzierbar (bei ca. 80% aller Clients innerhalb von 48 Stunden) und beschränkt sich nicht auf Singlemounts, also auch wenn das Volumen zusätzlich auch einen Laufwerksbuchstaben hat. Einzig am Localhost ist der Effekt nie zu beobachten.

Die Lösung:

Un-Elegant wie hart, einfach den Explorer-Cache für Listing ausschalten. Das geht indem man in

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanWorkstationParameters

den (DWORD) Wert DirectoryCacheLifetime auf 0 setzt. Nach einem Reboot ist das Problem verschwunden.

Spannend: Der Effekt ist exklusiv der Kombination Windows7 mit Server2008R2 vorbehalten, andere Clients oder Server zeigen immer alle Inhalte an.

Windows läd nur TEMP-Benutzerprofil

Aus unterschiedlichen Gründen mag Windows manchmal seine Servergespeicherten Benutzerprofile nicht mehr laden. Wirre Eventlog-Fehlermeldungen sind die Folge, von Rechten und Verzeichnissen ist die Rede. Wenn das übliche debuggen entlang dieser Meldungen nicht mehr fruchtet, hilft oft das Profil einfach zurückzusetzen:

  • PC neu starten (Wichtig um alle Zweige zu entladen!)
  • Als lokaler Administrator anmelden und das betroffene Profil komplett löschen (oder von der Maschine schieben)
  • Registry öffnen:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
    
  • Löschen des Unterschlüssels mit dem Namen <SID>.bak

Die <SID> ist die Sicherheits-ID (SID) des Benutzerkontos, bei dem das Problem auftritt. Der Unterschlüssel SID.bak sollte einen Registrierungseintrag ProfileImagePath enthalten, der auf den ursprünglichen Profilordner verweist, bei dem das Problem auftritt.

Wenn das Profil noch intakt und alle Rechte korrekt sind (schlimmstenfalls nochmal drüber erben und den Besitzer nicht vergessen), den key state auf „0“ setzen, das .bak entfernen (nachdem man die ID mit dem temp-profil gelöscht hat) und rebooten. NICHT ab- und anmelden, sondern rebooten (denn dann wird die profilelist erst neu geladen).