Freitag, 20. Juli 2012

Endlosschleife bei GPP - 0x8007000d Die Daten sind unzulässig

Group Policy Preferences basieren auf XML Dateien.
Bei der Anwendung der Einstellungen der Preferences werden diese XML Dateien gelesen. 

Die primären XML Dateien befinden sich in der sysvol Freigabe auf dem jeweiligen Domaincontroller.

\\domain.local\sysvol\domain.local\Policies\{GUID}\Machine\Preferences
\\domain.local\sysvol\domain.local\Policies\{GUID}\User\Preferences

In seltenen Fällen kann es vorkommen, dass diese XML Dateien beschädigt und korrupt werden. Den genauen Hintergrund zu dieser Tatsache nennt Microsoft nicht.

Ist das File erst einmal defekt, so lässt sich die Policy nicht mehr anwenden.
Im Eventlog erscheinen folgende (oder ähnliche) Fehlermeldungen:

Fehler beim Anwenden der "Group Policy Files"-Einstellungen. Die "Group Policy Files"-Einstellungen besitzen möglicherweise eine eigene Protokolldatei.

...

Eventid 8194: 0x8007000d Die Daten sind unzulässig

Aktiviert man das Debug-Logging des gpsvc, so lässt sich die GUID und der Name der jeweiligen Policy ermitteln und die betreffende Richtlinie kann gelöscht werden. In den meisten Fällen ist dies ausreichend.

Um die Einstellungen von gelöschten Policies zu revidieren,
werden jedoch zusätzlich auf jedem Computer History-Files erzeugt.

%allusersprofile%\Microsoft\Group Policy\History\{GUID}\Machine\Preferences
%allusersprofile%\Microsoft\Group Policy\History\{GUID}\SID\Preferences

Ist jedoch auch dieses History-File defekt, so wird auch nach der Löschung der Policy (innerhalb der GPMC) weiterhin ein Fehler erzeugt.
Dieser Fehler wird im Eventlog wie folgt vermerkt:

Die clientseitige Erweiterung konnte die Richtlinieneinstellungen für " " nicht  entfernen Computer, da ein Fehler mit Fehlercode "0x8007000d Die Daten sind unzulässig." Weitere Details finden Sie in der Ablaufverfolgungsdatei. aufgetreten ist.

Der Name der Policy kann nicht mehr ermittelt werden. Im gpsvc.log ist folgender Fehler ersichtlich:

2012-06-06 13:56:13.786 [pid=0x408,tid=0x3e48] GPH : C:\ProgramData\Microsoft\Group Policy\History\{GUID}\Machine\Preferences\Files\Files.xml

2012-06-06 13:56:13.786 [pid=0x408,tid=0x3e48] GPH data file : C:\ProgramData\Microsoft\Group Policy\History\{GUID}\Machine\Preferences\Files\Files.xml

2012-06-06 13:56:13.787 [pid=0x408,tid=0x3e48] Completed parse of GPH XML. [ hr = 0x8007000d "Die Daten sind unzulässig." ]


2012-06-06 13:56:13.788 [pid=0x408,tid=0x3e48] Completed remove GPH. [ hr = 0x8007000d "Die Daten sind unzulässig." ]


2012-06-06 13:56:13.793 [pid=0x408,tid=0x5e8] Leaving ProcessGroupPolicyExFiles() returned 0x8007000d


So lange das History-File nicht gelöscht wird, tritt bei jedem GPO Zyklus dieser Fehler erneut auf. Es muss also manuell das History-File gelöscht werden.
Microsoft verhält sich bedeckt und merkt nur an:

"However, some history files are corrupted or unreadable. Therefore, the corresponding Group Policy preferences are not applied successfully."

quelle:

Nach dem das File bzw. das gesamte GUID Verzeichnis auf dem Client gelöscht wurde, tritt dieser Fehler nicht mehr auf.

PS:
Teilweise lässt sich der ursprüngliche Fehler (0x8007000d Die Daten sind unzulässig) durch ein simples Kopieren der Gruppenrichtlinie beheben.