GPRESULT zeigt falsches Domain Functional Level

Hallo, Fabian hier. Heute möchte ich kurz auf eine Änderung im Verhalten von GPRESULT in Version des Windows Server 2003 SP2 (und später) hinweisen, die in einigen Konstellationen zu Problemen bzw. besser gesagt Verwirrung führen kann.

Wird GPRESULT auf einem Windows Server 2003 SP2 ausgeführt, kann es unter Umständen zu einer falschen Anzeige des "Domain Name" und des "Domain Type" Eintrags im Ausgabebereich "Computer Settings" kommen. Die Ausgabe des Befehls zeigt in diesem Fall anstatt des korrekten Domain Functional Levels (etwa "Windows 2000 native" oder "Windows Server 2003") nur "Domain Type: WindowsNT 4" an. Außerdem kommt es zu einer Verzögerung bei der Anzeige der Einstellungen, d.h. bevor in den ersten Zeilen "Computer Settings" überhaupt angezeigt werden, kommt es zu einem Delay in der Anzeige. Je nach Umgebung geht es dann nach ca. 10 bis 20 Sekunden weiter. Der GPRESULT Ausgabebereich "User Settings" ist nicht betroffen.

 

Dieses Anzeigeproblem tritt nicht bei älteren GPRESULT Versionen auf, sondern erst ab GPRESULT.EXE Dateiversion 5.2.3790.3959 (und nach derzeitigem Status folgende Versionen), welche mit Windows Server 2003 SP2 ausgeliefert wurde.

Hintergrund für dieses Phänomen ist ein veränderter Prozess bei der Ermittlung des Domänentypen in der GPRESULT.EXE. Während in früheren Versionen der Datei ein recht langwieriger Weg genutzt wurde, die Domänenfunktionsebene zu bestimmen, wird ab der Windows Server 2003 SP2 Version der GPRESULT.EXE eine Überprüfung des folgenden Registry Keys vorgenommen:

 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters --> REG_SZ “Domain”

Dieser Wert im REG_SZ Schlüssel "Domain" ist eine Kopie des Schlüssels "NV Domain" im gleichen Registry Zweig, der beim Booten der Maschine von diesem Schlüssel übernommen wird. Der Wert "NV Domain" ("Non Volatile" = nicht flüchtig, permanent) stellt das primäre DNS Suffix einer Maschine dar.

Ist nun das primäre DNS Suffix einer Maschine nicht korrekt gesetzt, z.B. nach einer Domänenmigration in einen neuen Namespace, oder wird in einer AD-Umgebung z.B. ein disjoined DNS Namespace betrieben, d.h. der DNS Domänenname entspricht nicht dem Active Directory Domänennamen, bekommt GPRESULT an diesem Punkt ein Problem: Es versucht nach dem Auslesen des "Domain" Schlüssels, den NetBIOS Namen der im "Domain" Schlüssel ausgelesenen Domain zu erreichen - daher auch die oben angesprochene Angabe des "falschen" Domänennamens in der GPRESULT Ausgabe. Da dort jedoch zwangsläufig kein Domänencontroller für diese Domäne lokalisiert werden kann, kann auch der Domänenfunktionsmodus nicht bestimmt werden. Als Fallback wird dann der Standardwert "Domain Type: WindowsNT 4" angegeben. Hier findet sich die Erklärung für den Timeout bei der Ausgabe von GPRESULT.

Als Alternative zur problematischen Darstellung des Domänennamens und des Domänenfunktionsmodus gibt es zwei Möglichkeiten, sollte es notwendig sein, GPRESULT zu den korrekten Ergebnissen zu "zwingen":

  1. Man kann eine ältere Version von GPRESULT nutzen, denn diese zeigt die Daten in solchen der Erfahrung nach recht seltenen Szenarien weiterhin korrekt an.
  2. Man kann den "Domain" Schlüssel in der Registry auf den Active Directory Domänennamen ändern. Dieser Wert wird jedoch wie angesprochen bei einem Neustart der Maschine überschrieben.
    Die Änderung des Schlüssels "NV Domain" hätte zur folge, daß man das Primary DNS Suffix der Maschine ändert, was meist nicht gewünscht sein wird, da es zu Problemen in der DNS Umgebung oder Maschinenkonfiguration führen kann.

Viele Grüße, Fabian.