Sicherung und Wiederherstellung von Gruppenrichtlinien via PowerShell

Gruppenrichtlinienobjekte lassen sich sichern, importieren und wiederherstellen. Das Ganze funktioniert am schnellsten mit der Windows PowerShell und den drei eingebauten Cmdlets Backup-GPO, Restore-GPO und Import-GPO. Mit nur einer Zeile Code in PowerShell können so beispielsweise die Gruppenrichtlinienobjekte domänenübergreifend wiederhergestellt werden.

Im Folgenden werden die drei PowerShell Befehle erklärt:

  • Backup-GPO
  • Restore-GPO
  • Import-GPO

Backup-GPO

Über das Backup-GPO Cmdlet lassen sich ein oder mehrere Gruppenrichtlinienobjekte für eine spätere Wiederherstellung exportieren. Möchte man eine bestimme GPO sichern, so kann dies wahlweise über den Namen oder die GUID geschehen.

Backup-GPO -Path \\Server1\Backups\GPO -Domain contoso.com -Server DC1 -Name testgpo
Backup-GPO -Path \\Server1\Backups\GPO -Domain contoso.com -Server DC1 -GUID fa4a9473-6e2a-4b87-ab87-175e68d97bde

Die Sicherung aller GPO’s erfolgt mit Angabe des Parameters -All.

Backup-GPO -Path \\Server1\Backups\GPO -Domain contoso.com -Server DC1 -All

Dabei muss allen Befehlen über den -Path Parameter das Ausgabeverzeichnis angegeben werden, in welches die Gruppenrichtlinienobjekte exportiert oder aus welchem sie importiert werden sollen. Lässt man die -Domain und -Server Parameter weg, wird automatisch die aktuelle Domäne ausgewählt und bzgl. des Servers der PDC Emulator kontaktiert.

Restore-GPO

Über das Restore-GPO Cmdlet lassen sich ein oder mehrere über das Backup-GPO Cmdlet exportierte Gruppenrichtlinienobjekte wiederherstellen. Die Wiederherstellung funktioniert hierbei nur in der selben Domäne, aus welcher die Gruppenrichtlinienobjekte exportiert wurden. Das Cmdlet versagt, falls die originale Domäne oder das passende Gruppenrichtlinienobjekt nicht existiert. Möchte man eine bestimme GPO wiederherstellen, so kann man dies wahlweise über den Namen oder die BackupId tun.

Restore-GPO -Path \\Server1\Backups\GPO -Domain contoso.com -Server DC1 -Name testgpo

Die Wiederherstellung aller GPO’s erfolgt mit Angabe des Parameters -All.

Restore-GPO -Path \\Server1\Backups\GPO -Domain contoso.com -Server DC1 -All

Import-GPO

Über das Import-GPO Cmdlet lassen sich ebenfalls ein oder mehrere über das Backup-GPO Cmdlet exportierte Gruppenrichtlinienobjekte wiederherstellen. Die Wiederherstellung funktioniert hier allerdings auch in einer anderen Domäne als der, aus welcher die Gruppenrichtlinienobjekte exportiert wurden. Möchte man eine bestimme GPO wiederherstellen, so kann man dies wieder wahlweise über den Namen oder die BackupId tun. Hinzu kommen die Parameter -TargetName und -TargetGUID welche angeben, in welche GPO die Einstellungen importiert werden sollen. Der -CreateIfNeeded Parameter sorgt dabei dafür, dass eine neue GPO erstellt wird, falls die angegebene Ziel-GPO nicht vorhanden ist.

Import-GPO -Path \\Server1\Backups\GPO -Domain fabrikam.com -Server DC1 -BackupGpoName testgpo -TargetName testgpo -CreateIfNeeded
PowerShell QuickTip:

Abschließend möchte ich noch eine Möglichkeit aufzeigen, alle exportierten Gruppenrichtlinienobjekte aus dem Verzeichnis auf einmal in einer anderen Domäne wiederherzustellen. Im Gegensatz zum Restore-GPO Cmdlet besitzt das Import-GPO Cmdlet den -All Switch leider nicht. Dies lässt sich allerdings über folgenden PowerShell Einzeiler bewerkstelligen:

gci \\Server1\Backups\GPO | % {((gc "$_\gpreport.xml") -as [XML]).GPO.Name} % {Import-GPO -Path \\Server1\Backup\GPO -BackupGpoName $_ -TargetName $_ -Domain fabrikam.com -Server DC1 -CreateIfNeeded}

Der Befehl iteriert über alle exportierten Gruppenrichtlinienobjekte innerhalb des Verzeichnisses, liest aus den darin enthaltenen gpreport.xml Dateien den Namen der jeweiligen GPO aus und verwendet diesen anschließend, um die Einstellungen selbiger in eine gleichnamige GPO zu importieren. Existiert eine solche nicht, wird sie erstellt.

 

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *