Erstellung einer Testumgebung als Abbild der Produktiven

Autor: Mark Heitbrink - vom 19.09.2014 - Kategorie(n): Anleitungen Hintergrundwissen

Die Scripte der GPMC liefern uns alles, was wir brauchen. Wer sie noch nicht auf seinem System integriert hat, sollte das schleunigst nachholen und die GPMC Sample Scripts bei Microsoft herunterladen.

Die beiden Scripts CreateXMLFromEnvironment.wsf und CreateEnvironmentFromXml.wsf machen genau das, was der Name andeutet. Sie exportieren eine Konfiguration und importieren sie in ein beliebiges System. Es kann eine physikalisch getrennte Testumgebung sein , eine beliebige andere Domäne oder auch das eigene Produktivsystem.
Mit ein wenig XML Manipulation lassen sich damit ganz schnell Standort-Schablonen erstellen zur Vervielfältigung von Strukturen oder die gesamte Domänen/OU Struktur in einer Unter-OU für Testzwecke nachstellen.

Ihr habt eine Umgebung ähnlich dieser, an den OUs hängen diverser Richtlinien:


Beispiel 1: Export der Struktur ab "gpo.de" und Import in einer getrennten Testumgebung

Ihr erstellt euch einen Speicherordner, C:\GPOExport, danach führt ihr das Script in einem Elevated Prompt aus.

Export:
cscript CreateXMLFromEnvironment.wsf C:\GPOExport\gpo.de.xml /TemplatePath:c:\GPOExport /StartingOU:"OU=gpo.de,DC=gallier,DC=ads"

Technisch gesehen werden nun mehrer Scripte der GPMC kombiniert. Die Richtlinien werden gesichert (quasi exportiert) und die OU Struktur mit den verlinkten Richtlinien inklusive deren Filter (WMI und Sicherheitsgruppe) werden in einem XML gespeichert. 

Hinweis für den Import der exportierten Struktur: Der Pfad C:\GPOExport ist in dem gpo.de.xml hinterlegt. Der Import kann nur aus diesem Pfad stattfinden. Entweder müsst ihr diesen Ordner im Zielsystem erstellen und dort die Daten drin hinterlegen oder ihr müsst das XML anpassen (suchen und ersetzen ist schnell gemacht)

Import:
cscript CreateEnvironmentFromXML.wsf /xml:\GPOExport\gpo.de.xml


Beispiel 2: Import in der Produktivumgebung als Standortschablone
Ihr könnte dieselbe Struktur wie die OU gpo.de ein weiteres Mal abbilden. Die Befehle für den Ex- und Import sind identisch, nur müssen wir dieses Mal vor dem Import das gpo.de.xml editieren
Direkt in der dritten Zeile des Exports steht der Name der StartingOU, ab der wir exportiert haben. Den braucht ihr nur zu ändern in den gewünschten neuen Namen.

----- gpo.de.xml -----
<?xml version="1.0" encoding="UTF-16"?>
<DomainRoot>
<OU Name="neuerStandort.de" BlockInheritance="false">
----- gpo.de.xml -----
 
Import, siehe oben.

Das Script erstellt nun eine identische Struktur und verlinkt dieselben Richtlinien ein weiteres Mal. Die Richtlinien werden nicht kopiert, sie werden nur erneut verlinkt.

ACHTUNG!

  • Vorhandene Sicherheitsgruppen die in einer der OUs als Objekte liegen, werden in die OU der neuen Struktur verschoben.
  • Die Richtlinien werden praktisch durch das  Restore Script wiederhergestellt, sodass der Inhalte identisch ist, aber dadurch erhöht sich die Version der Richtlinien +1, was dazu führt, daß alle Richtlinien von den Clients erneut verarbeitet werden (müssen)
  • Wird der Schalter /StartingOU verwendet, werden mehrfach verlinkte Richtlinien auch mehrfach gesichert und mehrfach wiederhergestellt. 


Beispiel 3: Erstellung einer TestOU in der Produktivumgebung mit kopierten Richtlinien
Klassischer Troubleshooting Fall oder auch Test, bevor man etwas produktiv einsetzt. Es wird eine Kopie erstellt. Der Export bleibt wie gehabt. Wir editieren wieder das gpo.de.xml File, wie in Beispiel 2.
Wer ein wenig XML lesen kann, kann auch die TestOU unterhalb der gpo.de OU schachteln ... das nur nebenbei

----- gpo.de.xml -----
<?xml version="1.0" encoding="UTF-16"?>
<DomainRoot>
<OU Name="neuerStandort.de" BlockInheritance="false">
----- gpo.de.xml ----- 

Wir müssen anschliessend den Namen der GPOs verändern, damit das RestoreScript neue Richtlinien erzeugt, die "alten" Inhalte importiert und dann diese neuen Richtlinien dann an die OUs verlinkt.

Die Verweise auf die verlinkte Richtlinien sehen im XML so aus:
----- gpo.de.xml -----
<GPOLink GPOName="B_Bildschirmschoner" Enabled="true" Enforced="false">
----- gpo.de.xml -----


Die Verweise auf die Sicherungen der Richtlinie sehen so aus:
----- gpo.de.xml -----
<GPO Name="B_Bildschirmschoner" Enabled="User" WMIFilter="gpo.de-Windows 7 und aufwaerts" TemplatePath="C:\GPOExport" Template="{FAB923C4-39B3-4B2D-81FD-6AC921C74C8F}">
----- gpo.de.xml -----


Der Unterschied ist, einmal wird GPOName verwendet und einmal GPO Name, also einmal mit, bzw ohne Leerzeichen. Wir müssen beide Stellen editieren, damit die Zuordnung der neuen Namen und Verlinkungen stimmt.

Über Suchen und Ersetzen ist das jetzt relativ leicht möglich:
1.  Suche GPOName=" und Ersetze durch GPOName=" TEST_
2.  Suche GPO Name=" und Ersetze durch GPO Name=" TEST_

Import, siehe oben


An das Beispiel 3 solltet ihr euch erst dann dransetzen, wenn ihr die anderen beiden schon 100mal gemacht habt! Offiziell ist das Script nur für eine Testumgebung gebaut worden. Es ist also nicht offiziell supportet. 

Wenn man es dann aber schon mehrfach im Einsatz hatte und sich mit dem XML etwas länger auseinandergesetzt hat und verstanden hat, was passiert: Export, Sicherung, Create, Restore etc. der wird es lieben. Denkt mal über Troubleshooting in der Produktivumgebung nach, das ist kaum möglich. Mit einer Kopie aller Einstellung, die auf alle Ressourcen der Produktiven Umgebung zugreifen kann ist man fast gerettet. Ein Fehler lässt sich dann leicht im Ausschlussverfahren finden, ohne das durch das Basteln der Betrieb gestört wird.