Automatische Sicherung der Gruppenrichtlinien - Backup GPO

30.10.2016 | Autor: Mark Heitbrink

Automatische Sicherung der Gruppenrichtlinien - Backup GPO

Sicherung der geänderten Richtlinien des Tages.

Eine  tägliche Vollsicherung aller Gruppenrichtlinien ist totaler Unsinn. Gruppenrichtlinien sind relativ statisch. Sobald die GPO Infrastruktur mit allen Regeln aufgebaut ist, verändert sich nur noch wenig. Alle mitgelieferten Skripte, mit denen sich die Sicherung automatisieren lässt, machen ein Vollbackup ohne Rücksicht darauf, pob der Objekt schon gesichert wurde. Es gibt kein "Attribut A", wie im Dateisystem.
Das führt dazu, daß man jeden Tag dieselben Objekte additiv sichert und auf Dauer seine Platte zumüllt mit immer der identischen Version des Objekts.

Was ist zu tun? Man gewöhnt sich einen Workflow - Best Practise - Gruppenrichtlinien editieren an. Die Regel ist einfach: Vor jedem Editieren, wird zuerst die Richtlinie gesichert. Das ist der Idealzustand, da ich dann jede Version/Generation der Richtlinie in meinem Backup habe.

Im Alltag eines Admins ist aber das klicken auf dem Objekt und die Sicherung vor dem Editieren etwas lästig, da der Backup Dialog nicht in der Verlinkung der Richtlinien integriert ist, sondern nur auf den Gruppenrichtlinienobjekten selbst zur Verfügung steht.

Die Alternative ist: Sicherung der geänderten Richtlinien des Tages.

Man sichert einmal alle Richtlinien händisch in der GPMC. Das ist mit einem Klick erledigt, daß muss man nicht scripten,  das passiert nur einmal. Sobald die Vollsicherung einmal erstellt ist, erstellt ihr einen Geplanter Task (Aufgabe) der jeden Tag läuft und in dem jeweils die Richtlinien gesichert werden, die sich an dem Tag geändert haben.

Das ist nicht 100% Versionsgenau, aber im normalen Leben sollte das reichen.

Das Powershell Script als Aufgabe muss auf einem System eingerichtet werden, auf dem die GPMC vorhanden ist. Das Skript ist nahezu selbsterklärend, Es muss nur der Pfad zum Backup Ordner angepasst werden. Dieser kann auch ein UNC Pfad sein.

 

# Convert/Format Date for GPO Report XML Filename
$Today=Get-Date -Format "MM-dd-yyyy"

# Change $Backup and $Report to fit Locations
$Path="C:\Daten"
$Backup="$Path\GPOBackup"
$Report="$Path\GPOReport"

if (-not (Test-Path $Backup)) {
New-Item -Path $Backup -ItemType "directory"
}
if (-not (Test-Path $Report)) {
New-Item -Path $Report -ItemType "directory"
}

# Collect all GPOs
$AllGPOs=Get-GPO -All

foreach ($GPO in $AllGPOs) {
    $Name=$GPO.DisplayName
    if ($GPO.ModificationTime.Date -eq (Get-Date).Date){
    Backup-GPO -Name $Name -Path $Backup
    Get-GPOReport -Name $Name -Path $Report\$Name-$Today.xml -ReportType Xml
    }
}
# Verlinkung der Richtlinien inkl Rangfolge / ListSoMPolicyTree
# jdhitsolutions.com/blog/powershell/8041/get-group-policy-links-with-powershell/
(Get-ADOrganizationalUnit -filter * | Get-GPInheritance).GpoLinks | Select-Object -Property Target,DisplayName,Enabled,Enforced,Order | Export-Csv -Path "$Path\gPLink.csv"