Da ich immer wieder in diversen Projekten auf die gleichen Arbeitsschritte mit Group Policy stoße und jedes mal das Rad neu erfinde, habe ich mal alle meine Powershell Scripte in ein Toolkit zusammen gefasst. Im wesentlichen geht es in der ersten Version um folgendes:
Ex- und Import
Zugegeben, mit den vorhandenen Powershell CMDlets ist ein Export sowie ein späterer Import keine wirkliche Herausforderung. Wer jetzt aber mal den Export gesehen hat, wird schnell feststellen, dass die UID’s der einzelnen Policies in der Ordnerstruktur nicht wirklich lesbar sind. An dieser Stelle mache ich nichts weiter, als einen Export mit den Namen der jeweiligen Policy zu erzeugen. Kein Killerfeature aber für meinen Teil ziemlich hilfreich.
Der Import der Policies gestaltet sich ähnlich einfach. Da ich allerdings oft GPO’s aus der einen Domäne in eine andere Domäne bewegen muss, sieht der Import die Vergabe eines Prefix und eines Suffix vor. Das macht den Import, falls bereits Policies mit dem gleichen Namen vorhanden sind, deutlich einfacher.
Audit
Wenn man mit GPO’s arbeitet, dann ist es oft nötig die Versionen sowie Creation und Modification Datum schnell zu vergleichen. Das Toolkit erzeugt ein CSV File mit all diesen Information. Damit können wir in Excel dann relativ schnell auch einen Änderungsverlauf dokumentieren.
Compare
Ich finde oft unterschiedlich benannte Policies, die im wesentlichen aber oft identische Einstellungen haben. Auch wenn ich eine Kopie einer Policy erstelle und dort Änderungen mache, ist es hilfreich diese nicht nur bezüglich der Version, sondern auch die einzelnen Einstellungen miteinander zu vergleichen. Genau das macht diese Funktion. Das Ergebnis ist ebenfalls ein CSV File, den ich in Excel schnell zur Dokumentation verwenden kann.
Zusätzlich wird natürlich für jede Aktion noch ein Logfile erstellt.
Wer also ebenfalls einen kleinen Helfer für die Arbeit mit GPO’s benötigt, kann sich das Skript bei Github herunterladen. Fehler, Anregungen können direkt in Github hinterlassen werden und sind ausdrücklich erwünscht. Wer Verbesserungen oder Funktionen zusätzlich einbringen möchte, kann das natürlich auch direkt über Github machen.
CleanUp
Wer viel mit Policies arbeitet und diese immer mal wieder ex- und importiert, hat irgendwann viele GPO’s in seinem Active Directory. Irgendwann ist es also auch mal an der Zeit aufzuräumen. Ich habe heute das Script noch um einen CleanUp Teil ergänzt. Folgender Parameter löscht alle nicht verlinkten Group Policy Objekte:
GPO-ToolSet.ps1 -Mode CleanUp
Aber Achtung, die Funktion hat keinen doppelten Boden und löscht nicht verlinkte Objekte ohne weitere Rückfrage. Vorher also lieber ein Backup/Export machen.