Backup der Gruppenrichtlinienobjekte
Gruppenrichtlinien (GPO = Group Policy Objects) vereinfachen die Verwaltung in einer Windowsumgebung deutlich.
Microsoft schreibt dazu:
Anhand von Gruppenrichtlinieneinstellungen werden die verschiedenen Komponenten der Desktopumgebung definiert, die durch einen Systemadministrator verwaltet werden, wie z. B. die Programme, die Benutzern zur Verfügung stehen, die Programme auf dem Desktop des Benutzers und die Optionen im Startmenü. Um eine spezielle Desktopkonfiguration für eine bestimmte Benutzergruppe zu erstellen, verwenden Sie den Gruppenrichtlinienobjekt-Editor. Von Ihnen angegebene Gruppenrichtlinieneinstellungen sind in einem Gruppenrichtlinienobjekt enthalten, das wiederum zu ausgewählten Active Directory®-Objekten zugeordnet ist (Standorte, Domänen oder Organisationseinheiten).
Gruppenrichtlinien gelten nicht nur für Benutzer und Clientcomputer, sondern auch für Mitgliedsserver, Domänencontroller und weitere Computer unter Microsoft® Windows® 2000 innerhalb des Verwaltungsbereichs. Standardmäßig betreffen Gruppenrichtlinien, die auf eine Domäne angewendet werden (die also auf Domänenebene direkt oberhalb des Stammverzeichnisses von Active Directory-Benutzer und -Computer angewendet werden), alle Computer und Benutzer in der Domäne. Active Directory-Benutzer und -Computer weist außerdem eine integrierte Domänencontroller-Organisationseinheit auf. Sind Ihre Domänencontrollerkonten an diesem Speicherort gespeichert, können Sie unter Verwendung des Gruppenrichtlinienobjekts Standard-Domänencontrollerrichtlinie Domänencontroller getrennt von anderen Computern verwalten.
Die Gruppenrichtlinien beinhalten Richtlinieneinstellungen für die Benutzerkonfiguration (mit Auswirkung auf Benutzer) und für die Computerkonfiguration (mit Auswirkung auf Computer). Weitere Informationen finden Sie unter Benutzerkonfiguration und unter Computerkonfiguration.
Quelle: Übersicht über Gruppenrichtlinie
Wie von allen Dingen die einem ans Herz gewachsen sind sollte man natürlich auch von den Gruppenrichtlinien regelmäßige Backups erstellen.
Das folgende Skript soll dies automatisieren. Es erstellt in einem anzugebenden Ordner pro Durchlauf einen Ordner mit allen Gruppenrichtlinien und zwei Text Dateien. in der ersten Datei (_Backup.log) wird der Backupvorgang dokumentiert, außerdem ist mit dieser Datei die Zuordnung zwischen Gruppenrichtlinien, Gruppenrichtlinien-ID und der Backup-Id möglich. Das ist insbesondere für die Wiederherstellung der GPOs wichtig. Die zweite Datei enthält alle Verlinkungen der gesicherten GPOs.
Zum Erzeugen der Backups wird der Pfad benötigt an dem die Backups aufbewahrt werden sollen. Erfolgt keine Angabe werden 7 Backups aufbewahrt.
backup-gpo.ps1 C:\backup Speichert das Backups im Verzeichnis c:\Backup
backup-gpo.ps1 -backupDir \\storagesystem\backup$\GPO -keepBackups 10 Speichert das Backups im Verzeichnis \\storagesystem\backup$\GPO und bewahrt 10 Backups auf
Beispiel 2011-08-05_backup.log [Auszug]:
DisplayName : Default Domain Policy GpoId : 354e6522-016d-11d2-4325-00c04fb984f9 Id : 982773d3-f421-411b-9753-e23efa9565e1 BackupDirectory : \\storagesysten\backup$\GPO\_backup CreationTime : 05.08.2011 02:16:04 DomainName : dacoweb.org Comment : DisplayName : Zertifikatsverteilung GpoId : 354e6522-8843-42b0-2a3b-2737dd308c1a Id : 987ef322-f1a5-487d-6d3c-85363ff9bb33 BackupDirectory : \\storagesystem\backup$\GPO\_backup CreationTime : 05.08.2011 02:16:06 DomainName : dacoweb.org Comment : DisplayName : Default Domain Controllers Policy GpoId : 982dc2b2-016f-11d2-945f-00c04fb984f9 Id : 324e212f-013b-413c-a8dc-051b21a69ebd BackupDirectory : \\storagesystem\backup$\GPO\_backup CreationTime : 05.08.2011 02:16:07 DomainName : dacoweb.org Comment : DisplayName : Servereinstellungen GpoId : 2765d423-8843-42b0-2a3b-233bb2938322 Id : 987ef322-f1a5-487d-6d3c-23343fd26545 BackupDirectory : \\storagesystem\backup$\GPO\_backup CreationTime : 05.08.2011 02:16:08 DomainName : dacoweb.org Comment :
Beispiel 2011-08-05_links.log [Auszug]:
DistinguishedName : OU=Domain Controllers,DC=dacoweb,DC=org
LinkedGroupPolicyObjects : {cn={982dc2b2-016f-11d2-945f-00c04fb984f9},cn=polici
es,cn=system,DC=dacoweb,DC=org}
DistinguishedName : OU=Administration,DC=dacoweb,DC=org
LinkedGroupPolicyObjects : {}
DistinguishedName : OU=Adminkonten,OU=Administration,DC=dacoweb,DC=org
LinkedGroupPolicyObjects : {}
DistinguishedName : OU=Server,OU=Administration,DC=dacoweb,DC=org
LinkedGroupPolicyObjects : {cn={2765d423-8843-42b0-2a3b-233bb2938322},cn=polici
es,cn=system,DC=dacoweb,DC=org, cn={354e6522-8843-42
b0-2a3b-2737dd308c1a},cn=policies,cn=system,DC=dacow
eb,DC=org}
<#
.SYNOPSIS
Erstellt ein Backup der Gruppenrichtlinienobjekte
.Description
Das Script erstellt Backups der Gruppenrichtlinienobjekte im angegeben Verzeichnis (BackupDir).
Dazu werden im angegeben Verzeichnis pro Backup ein Unterordner angelegt.
Der optionale Parameter -BackupPrefix kann genutzt werden um den Namen der Unterordner anzupassen.
Durch Angabe des Parameters -keepBackups kann die Anzahl der aufbewahrten Backups konfiguriert werden.
Standardmäßig werden 7 Backups aufbewahrt
.Notes
Es werden die Module ActiveDirectory und GroupPolicy benötigt
.Example
backup-gpo.ps1 C:\Backup
Speichert das Backups im Verzeichnis c:\Backup
.Example
backup-gpo.ps1 -backupDir C:\Backup -keepBackups 10
Speichert das Backups im Verzeichnis c:\Backup und bewahrt 10 Backups auf
#>
PARAM(
[Parameter(Position=0,Mandatory=$true,HelpMessage="Zielverzeichnis des Backups",ValueFromPipeline=$false)][string]$backupDir,
[string]$BackupPrefix="daily",
[int]$keepBackups=7
)
### No configuration needed below this point ###
Import-Module GroupPolicy,ActiveDirectory
$currentBackupDir = ($BackupDir + "\_backup")
write-host "Create Backup: " $currentBackupDir
new-item -type directory ($currentBackupDir) | out-null
$mydate = get-date -uformat "%Y-%m-%d"
backup-gpo -all -path $currentBackupDir | out-File ($currentBackupDir + "\" + $myDate + "_backup.log")
Get-ADOrganizationalUnit -filter "Name -like '*'" | fl DistinguishedName,LinkedGroupPolicyObjects | out-file ($currentBackupDir + "\" + $myDate + "_gpo-links.txt")
$removeBackup = $backupDir + "\" + $backupPrefix + ($keepBackups-1)
if (test-path($removeBackup)) {
write-host "Remove Backup " $removeBackup
remove-item ($removeBackup) -Confirm:$false -Recurse
}
write-host "Rotate Backups"
for($i=$keepBackups;$i -gt -1;$i--) {
if (test-path($backupDir + "\" + $backupPrefix + $i)) {
move-item -path ($backupDir + "\" + $backupPrefix + $i) -destination ($backupDir + "\" + $backupPrefix + ($i+1))
}
}
move-item -path ($currentBackupDir + "\") -destination ($backupDir + "\" + $backupPrefix + 0 + "\")
Weiterführende Informationen zum Thema Gruppenrichtlinien:
- MSXFAQ.de - Gruppenrichtlinien: http://www.msxfaq.net/verschiedenes/gpo.htm
- Gruppenrichtlinien - Übersicht, FAQ und Tutorials: http://www.gruppenrichtlinien.de/