SYSVOL aufräumen - Verwaiste GPT Objekte finden

06.11.2020 | Autor: Mark Heitbrink

Das SYSVOL wird repliziert und manchmal ist es zwischen den DCs nicht konsistent. Es ist ein FileSync und Copy Job, der nicht immer so stabil ist. Zu NTFRS Zeiten war der Umgang mit den Burflags in Der Registry fast tägliches Brot in großen Umgebungen. Mit DFS-R ist es um vieles besser geworden. Um die Replikation wieder anzuschubsen macht man vereinfacht ausgedrückt ein "Schmeiss weg, mach neu" auf dem nicht mehr replizierenden DC.

DFS-R: How to force authoritative and non-authoritative synchronization for DFSR-replicated sysvol replication
NTFRS: Use the BurFlags registry key to reinitialize File Replication Service

Ob eure DCs konsistent sind oder ob es Fehler gibt, würde auf den ersten Blick schon ein einfacher Vergleich der Ordner Anzahl im SYSVOL liefern, sind die Ordner identisch muss man sich einzelne Dateien, dere Größe und Datum anschauen, Wichtig! Das macht ihr auf jedem DC!
\\DC01\sysvol\eure.dom\Policies
\\DC02\sysvol\eure.dom\Policies
\\DC03\sysvol\eure.dom\Policies
[...]

Gerade beim Löschen der Richtlinien gibt immer wieder das Phänomen, daß das GPT (Group Policy Template, Dateianteil der Richtlinie im SYSVOL) bzw. Teile davon auf dem Server erhalten bleiben. Diese Leichen oder auch verwaisten Objekte kann man löschen, sie haben keinerlei Bezug mehr zur AD Datenbank. Es gibt kein zugehöriges GPC (Group Policy Container, AD Anteil der Richtlinie). Selbst wenn Daten in GPT liegen, es gibt keine Richtlinie mehr, zu der sie gehören, die verlinkt, gesichert, exportiert oder verwendet werden könnte. Es ist Datenmüll. Das Backup der Richtlinien aus der GPMC umfasst nur die Objekte, die im AD dokumentiert sind.

Aufgrund der ungelöschten Objekte kann das Ergebnis des obigen Tests der Ordneranzahl auf den DCs unterschiedlich ausfallen. Der erste Step ist also erst mal einen Überblick zu kriegen, welche echten GPOs noch im System sein sollten, damit man sie anschliessend löschen kann.

In den GPMC Sample Scripts gibt es das Script findorphanedGPOsInSYSVOL.wsf. Ich habe mal ein Powershell Pendant gebaut, das ganz einfach alle GUID Ordner des \\eure.dom\sysvol\eure.dom\Policies mit der AD Datenbank cn=policies,cn=system,dc=eure,dc=dom abgleicht und eine Liste der Ordner erstellt, die nicht mehr im AD vorhanden sind. Diese können dann gelöscht werden.

Das Script macht nur einen Vergleich, aber in die foreach Schleife direkt ein remove einzubauen ist keine Kunst ;-)

 

# Mark Heitbrink, www.gruppenrichtlinien.de
$Domain=(Get-ADDomain).DnsRoot
$DN=(Get-ADDomain).DistinguishedName
$AllFolders=(Get-ChildItem \\$domain\SYSVOL\$Domain\Policies -Directory -Filter "{*").Name -replace "{" -replace "}"
$RealADGPOIDs=(Get-GPO -All).ID

$OrphanedGPOsinSysvol=$AllFolders | Where {$RealADGPOIDs -NotContains $_}

foreach ($Orphaned in $OrphanedGPOsinSysvol) {
    write "---------------------------------------------------"
    write ""
    write "Can not find $Orphaned in $dn,cn=system,cn=policies"
    write ""
    write "SYSVOL Folder $Orphaned containing objects:"
    (Get-ChildItem -Path "\\$domain\SYSVOL\$Domain\Policies\{$Orphaned}" -recurse).Fullname
    write ""
    write "$Orphaned" | Out-File $env:TEMP\OrphanedGPOsinSysvol.txt -append
    }
$measure=$OrphanedGPOsinSysvol.count
$Log="$env:TEMP\OrphanedGPOsinSysvol.txt"

write "There are $measure orphaned Objects in SYSVOL"
write ""
write "See them all in $Log"
write ""

 

In meinem AD, das ca 10 Jahre alt ist, gibt es neben den ca. 300 realen Richtlinien mittlerweile  130(!) verwaiste Objekte. Mein Demo AD war und ist immer schon ein SingleDC AD gewesen, mein DC muss nur alle paar Jahre mit einem neuen DC einmalig replizieren, ansonsten steht der ganz allein für sich. Trotzdem haben sich über die Jahre Reste ergeben, deren Löschvorgang über die GPMC nicht sauber beendet wurde. Je mehr ihr Richtlinien in Masse per Script erzeugt und direkt wieder löscht, umso mehr Leichen werdet ihr finden.