Scripte der GPMC

Verfasser: Yusuf Dikmenoglu


Das die GPMC scriptingfähig ist, dürfte vielen bekannt sein.
Wenn man die GPMC installiert hat , finden sich 32 Scripte im Verzeichnis „%PROGRAMFILES%\GPMC\Scripts“.
Die Scripte basieren auf Visual Basic- bzw. JavaScript und haben die Dateiendung WSF (Windows Script File).
Zu jedem Script lässt sich eine Hilfe anzeigen, in dem man in der Kommandozeile den Scriptnamen gefolgt von „/?“ aufruft.

In diesem Artikel stelle ich die vorhandenen Scripte in  alphabetischer Reihenfolge vor.

BackupAllGPOs.wsf
Bisher musste man die GPOs über das System State (oder Dritt Anbieter) sichern, was bei der Wiederherstelllung einer GPO einen zweimaligen Neustart des Servers erforderte.
Das „BackupAllGPOs.wsf“ - Script sichert alle GPOs einer Domäne im angegebenen Speicherort. Das Zielverzeichnis muss bereits existieren und wird nicht mit der Sicherung erstellt. Mit dem Schalter „/Comment“ kann zusätzlich ein Kommentar wie z.B. das Sicherungsdatum, angegeben werden.

Beispiel:
BackupAllGPOs.wsf \\Server\Freigabe\GPOBackups /Comment:"Sicherung vom 11.11.2006" /Domain: <DNS-Domänenname>


BackupGPO.wsf
Mit dem Script „BackupGPO.wsf“ kann auch eine bestimmte GPO gesichert werden. Das wäre ideal z.B. vor einer Änderung. Auch hier muss das Zielverzeichnis vorher existieren und man kann bei der Sicherung ebenfalls einen Kommentar vergeben.

Beispiel:
BackupGPO.wsf TestGPO \\Server\Freigabe\GPOBackups /Comment: "Sicherung vor Änderung" /Domain: <DNS-Domänenname>


CopyGPO.wsf

Wenn eine Gruppenrichtlinie kopiert werden soll, kann man dies über das Script „CopyGPO.wsf“ erledigen. Mit Angabe des Namens oder GUID des Quell-Gruppenrichtlinienobjektes und der Vergabe eines neuen Namens, werden die Einstellungen aus dem Quell- in das Ziel-Gruppenrichtlinienobjekt kopiert.

Beispiel:
CopyGPO.wsf QuellGPO NeueGPO /SourceDomain: <DNS-Domänenname> /TargetDomain: <DNS-Domänenname>


CreateEnvironmentFromXML.wsf

Mit dem Script „CreateEnvironmentFromXML.wsf“ wird eine XML-Datei eingelesen, die eine Richtlinienumgebung angibt, wie z.B. Gruppenrichtlinienobjekte, Organisationseinheiten, Sicherheitsgruppen und Verknüpfungen. Mit diesem Script kann die Umgebung durch Erstellen der Objekte in einer Domäne erstellt oder die Umgebung durch Löschen von in der XML - Datei angegebenen Objekte gelöscht werden.


CreateGPO.wsf

Das „CreateGPO.wsf“ - Script erstellt eine GPO mit dem erwünschten Namen in der gewünschten Domäne (mit den Standardoptionen).

Beispiel:
CreateGPO.wsf MeineGPO /Domain: <DNS-Domänenname>.


CreateMigrationTable.wsf
Migrationstabellen kann man sich mit dem Script „CreateMigrationTable.wsf“ erstellen lassen. Damit können Migrationstabellen bearbeitet werden und beim domänenübergreifenden Importieren und Kopieren von Gruppenrichtlinienobjekten zum Zuordnen von Pfaden und Sicherheitsprinzipalen zu neuen Werten verwenden lassen.

Beispiel:
CreateMigrationTable.wsf <TableName> /GPO:<GPO Name> /BackupLocation:<Dateipfad> /AllGPOs /Overwrite /MapByName /Domain: <DNS-Domänenname>.


CreateXMLFromEnvironment.wsf
Das Script „CreateXMLFromEnvironment.wsf“ liest eine vorhandene Richtlinienumgebung und erstellt eine XML - Datei, die diese Umgebung darstellt. In der XML - Datei werden Informationen zu Gruppenrichtlinienobjekte, Gruppenrichtlinien - Objektverknüpfungen sowie zur Sicherheit von Gruppenrichtlinienobjekten erfasst. Diese Script kann in Verbindung mit dem Script „CreateEnvironmentFromXML.wsf“ verwendet werden, um zu Stagingzwecken ein Replikat einer Domäne zu erstellen.


DeleteGPO.wsf
Wenn man mit Angabe des Namens oder der GUID eines Gruppenrichtlinienobjekts, dieses löschen möchte, kann man es mit dem „DeleteGPO.wsf“ - Script erledigen. Das Script löscht standardmäßig die Verknüpfungen mit diesem Gruppenrichtlinienobjekt in derselben Domäne. Um Verknüpfungen beizubehalten, muss man den Schalter „/KeepLinks“ anwenden.

Beispiel:
DeleteGPO.wsf <GPOName> /KeepLinks /Domain:<DNS-DomänenName>.


DumpGPOInfo.wsf
Um sich die Informationen zu einem bestimmten Gruppenrichtlinienobjekt anzuzeigen wie z.B. den Besitzer, die Versionsnummer, den Status, Zeit der Erstellung sowie Zeit der Änderung, kann man hierzu das „DumpGPOInfo.wsf“ - Script verwenden.

Beispiel:
DumpGPOInfo.wsf MeineGPO /Domain:<DNS-Domänenname>.


DumpSOMInfo.wsf
Das „DumpSOMInfo.wsf“ - Script zeigt Informationen zu einer bestimmten Domäne, zu einem bestimmten Standort oder Organisationseinheit, einschließlich der Gruppenrichtlinien - Objektverknüpfungen und Berechtigungen im Zusammenhang mit Richtlinien.

Beispiel:
DumpSOMInfo.wsf "Test OU" /ShowInherited /Domain:<DNS-Domänenname>.


FindDisabledGPOs.wsf
Um vollständig bzw. teilweise deaktivierte Gruppenrichtlinienobjekte in der angegebenen Domäne zu finden und anzuzeigen, gilt es das „FindDisabledGPOs.wsf“ - Script auszuführen.

Beispiel:
FindDisabledGPOs.wsf /Domain:<DNS-Domänenname>.


FindDuplicateNamedGPOs.wsf
Mit dem „FindDuplicateNamedGPOs.wsf“ - Script, kann man sich alle Gruppenrichtlinienobjekte mit doppelten Namen in der angegebenen Domäne anzeigen lassen.

Beispiel:
FindDuplicateNamedGPOs.wsf /domain:<DNS-Domänenname>.


FindGPOsByPolicyExtension.wsf
Das „FindGPOsByPolicyExtension.wsf“ - Script zeigt alle Gruppenrichtlinienobjekte in der angegebenen Domäne, für die eine bestimmte Richtlinienerweiterung konfiguriert wurde an. Das Script sucht z.B. alle Gruppenrichtlinienobjekte, die die Richtlinieneinstellungen Softwareinstallation oder Ordnerumleitung enthalten.


FindGPOsBySecurityGroup.wsf
Dieses Script „FindGPOsBySecurityGroup.wsf“ zeigt alle Gruppenrichtlinienobjekte, für die ein bestimmter Sicherheitsprinzipal über die angegebene Berechtigung oder effektive Berechtigung verfügt. Als Berechtigungstyp können Sie Lesen, Anwenden, Bearbeiten oder Vollzugriff angeben. Falls keine Einschränkung der Berechtigung bei dem ausführen des Befehls getroffen wird, werden alle Objekte angezeigt, die über die Berechtigung „Anwenden“ verfügen. Kurz gesagt, mit diesem Script werden alle Gruppenrichtlinienobjekte nach Sicherheitsgruppen aufgelistet.

Beispiel:
FindGPOsBySecurityGroup.wsf "Domain Admins" /Permission:Edit /Effective.


FindGPOsWithNoSecurityFiltering.wsf
Damit die Gruppenrichtlinienobjekte in der angegebenen Domäne angezeigt warden, die für niemanden gelten, gilt es das “FindGPOsWithNoSecurityFiltering.wsf“ - Script auszuführen. Es werden alle Objekte angezeigt, die nicht über die Berechtigung „Anwenden“ verfügen.

Beispiel:
FindGPOsWithNoSecurityFiltering.wsf /Domain:<DNS-Domänenname>.


FindOrphanedGPOsInSYSVOL.wsf
Mit diesem Script „FindOrphanedGPOsInSYSVOL.wsf“ werden alle Gruppenrichtlinienobjekte gesucht und angezeigt, die sich im SYSVOL-Verzeichnis befinden und keine entsprechende Verknüpfung zum Active Directory haben.

Beispiel:
FindOrphanGPOsInSYSVOL.wsf /Domain:<DNS-Domänenname>.


FindSOMsWithExternalGPOLinks.wsf
Das „FindSOMsWithExternalGPOLinks.wsf“ - Script zeigt alle Domänen, Organisationseinheiten und Standorte in der angegebenen Domäne, die mit einem Gruppenrichtlinienobjekt in einer anderen Domäne verknüpft ist an.

Beispiel:
FindsSOMsWithExternalGPOLinks.wsf /Domain:<DNS-Domänenname>.


DomaineFindUnlinkedGPOs.wsf
Um alle Gruppenrichtlinienobjekte anzuzeigen, die keine Verknüpfungen zu einer bestimmten Domäne haben, gilt es das „DomaineFindUnlinkedGPOs.wsf“ - Script auszuführen. Verknüpfungen ausserhalb der angegebenen Domäne, einschliesslich Standortverknüpfungen, werden nicht angezeigt.

Beispiel:
FindUnlinkedGPOs.wsf /Domain:<DNS-Domänenname>.


GetReportsForAllGPOs.wsf
Ein weiteres hilfreiches Script (z.B. für die Dokumentation) im alltäglichen Administrator Leben ist das „GetReportsForAllGPOs.wsf“ - Script. Dieses kann verwendet werden, um sich alle Gruppenrichtlinienobjekte in der Domäne (als Bericht) anzuzeigen. Dieses Script erstellt zwei Dateien, einmal eine XML-Datei in der detaillierte Informationen wie z.B. Sicherheitsfilterung, WMI - Filterung, Delegierung, Computer- und Benutzer Einstellungen enthalten ist und zum anderen, wird eine HTML - Datei erstellt. Mit dem „ReportLocation“ Parameter kann man vorgeben, in welchem Verzeichnis die Dateien erstellt werden. Mit dem Schalter „/Domain“ kann man die Domäne auswählen, für die die Berichte erstellt werden soll.

Beispiel:
GetReportsForAllGPOs.wsf C:\GPO - Reports /Domain:<DNS-Domänenname>.


GetReportsForGPO.wsf
Dieses Script „GetReportsForGPO.wsf“ generiert ebenfalls die beiden Dateien XML- und HTML - Berichte, für ein bestimmtes Gruppenrichtlinienobjekt. Ansonsten gelten die gleichen Ausführungen wie für das „GetReportsForAllGPOs.wsf“ - Script.


GrantPermissionOnAllGPOs.wsf

Mit „GrantPermissionOnAllGPOs.wsf“ wird einem Benutzer oder einer Gruppe die angegebene Berechtigungsstufe für alle Gruppenrichtlinienobjekte in der angegebenen Domäne erteilt. Mit dem Schalter „/Replace“ kann eine bereits bestehende Berechtigung neu vergeben werden.

Beispiel:
GrantPermissionOnAllGPOs.wsf "Vertrieb Gruppe"/Permission:FullEdit /Replace /Domain:<DNS-Domänenname>.


ImportAllGPOs.wsf
Das „ImportAllGPOs.wsf“ - Script erstellt ein neues Gruppenrichtlinienobjekt und importiert Einstellungen in dieses Gruppenrichtlinienobjekt für jedes gesicherte Gruppenrichtlinienobjekt, dass in einem bestimmten Pfad gespeichert ist. Der Name der gesicherten GPO wird für die neue GPO übernommen. Falls man die „neue“ GPO in das gleiche Verzeichnis erstellen lässt, wird man vom Assistenten gefragt, ob man die bestehende GPO überschreiben möchte, daher ist hier Vorsicht geboten.

Beispiel:
ImportAllGPOs.wsf D:\GPO-Backup /MigrationTable:D:\Table1.xml


ImportGPO.wsf

Mit dem „ImportGPO.wsf“ - Script (was dem ImportAllGPOs-Script ähnelt) werden die Einstellungen aus der angegebenen Sicherung in ein vorhandenes Ziel-Gruppenrichtlinienobjekt in der angegebenen Domäne importiert.


Lib_CommonGPMCFunctions.js

Diese Datei „Lib_CommonGPMCFunctions.js“ wird für viele der Beispielskripts, (eine so genannte Bibliothek mit gemeinsamer Hilfsfunktion) verwendet. Wenn die Skripts in einen anderen Pfad kopiert werden, muss auch die Bibliotheksdatei in diesen Pfad kopiert werden, damit die Beispielskripts funktionsfähig sind bzw. bleiben.


ListAllGPOs.wsf

Mit diesem Script „ListAllGPOs.wsf“ werden alle GPOs der angegebenen Domäne angezeigt. Zusätzlich kann man sich mit dem Schalter „/V“ detailierte Informationen anzeigen lassen.

Beispiel:
ListAllGPOs.wsf /V /Domain:<DNS-Domänenname>


ListSOMPolicyTree.wsf
Das „ListSOMPolicyTree.wsf“ - Script druckt eine Liste aller Standorte, Domänen und Organisationseinheiten in der angegebenen Domäne, mit einer Liste der Gruppenrichtlinienobjekte, die mit der Domäne und den einzelnen Organisationseinheiten verknüpft sind.

Beispiel:
ListSOMPolicyTree.wsf /Domain:<DNS-Domänenname>


QueryBackupLocation.wsf
Wenn man sich Informationen zu allen gesicherten Gruppenrichtlinienobjekten, die vom Benutzer im angegebenen Dateisystempfad gesichert wurden, anzeigen möchte, so gilt es das Script „QueryBackupLocation.wsf“ auszuführen. Auch hier kann man sich mit dem Schalter „/V“ (Verbose) detailierte Informationen anzeigen lassen.

Beispiel:
QueryBackupLocation.wsf \\Server\Freigabe\GPOBackups /Verbose


RestoreAllGPOs.wsf
Mit „RestoreAllGPOs.wsf“ stellt man alle Gruppenrichtlinienobjekte wieder her, die in einem bestimmten Dateisystempfad gespeichert sind.

Beispiel:
RestoreAllGPOs.wsf D:\Backup /Domain:<DNS-Domänenname>


RestoreGPO.wsf
Möchte man ein gesichertes Gruppenrichtlinienobjekt wieder herstellen, so kann man das Script „RestoreGPO.wsf“ ausführen. Dieses funktioniert natürlich nur, wenn die Ursprungsdomäne von der die GPO gesichert wurde, auch verfügbar ist. Falls das nicht mehr der Fall sein sollte, wird die Ausführung des Scripts fehlschlagen.

Beispiel:
RestoreGPO.wsf D:\GPO-Backup BackUpGPO.


SetGPOCreationPermissions.wsf
Das „SetGPOCreationPermissions.wsf“ - Script erteilt oder entfernt einem Benutzer oder einer Gruppe, die Berechtigung zum erstellen von Gruppenrichtlinienobjekten in einer Domäne.

Beispiel:
SetGPOCreationPermissions.wsf "Richtlinien Admins"
SetGPOCreationPermissions.wsf Test-Admins /remove


SetGPOPermissions.wsf
Mit diesem Script „SetGPOPermissions.wsf“ wird die Berechtigungsstufe für einen Benutzer bzw. einer Gruppe für ein bestimmtes Gruppenrichtlinienobjekt festgelegt. Als Berechtigungsstufe können Lesen, Anwenden, Bearbeiten, Vollzugriff, oder Keine angeben werden. Benutzt man den „/Replace“ Schalter, werden zuerst die bereits bestehenden Berechtigungen entfernt und anschließend die gewünschte Berechtigung vergeben.

Beispiel:
SetGPOPermissions.wsf Test-GPO Test-Gruppe /Permission:Edit


SetGPOPermissionsBySOM.wsf
Möchte man einem Benutzer oder einer Gruppe die angegebene Berechtigungsstufe für alle Gruppenrichtlinienobjekte die mit einer angegebenen Domäne, einer angegebenen Organisationseinheit oder einem angegebenen Standort erteilen, so ist das „SetGPOPermissionsBySOM.wsf" - Script anzuwenden. Als Berechtigungsstufe können Lesen, Anwenden, Bearbeiten, Vollzugriff, oder Keine angeben werden.

Beispiel:
SetGPOPermissions.wsf Test-GPO Test-Gruppe /Permission:Edit

SetSOMPermissions.wsf
Das „SetSOMPermissions.wsf“ - Script legt Berechtigungen (für einen Benutzer oder eine Gruppe) im Zusammenhang mit Richtlinien für einen bestimmten Standort, eine bestimmte Domäne oder eine bestimmte Organisationseinheit fest. Mit dem „/Permission“ Schalter kann folgende Berechtigung, als die wäre: LinkGPOs, RSoPLogging, RSoPPlanning, All und None vergeben werden. Wenn der „/Inherit“ (vererben) Schalter verwendet wird, bekommen diese Berechtigung auch alle Untercontainer vererbt.

Beispiel:
SetSOMPermission.wsf VerkaufOU Benutzer /Permission:LinkGPOs /Inherit

Hinweis:
Die Rechte Lesen, Anwenden, Bearbeiten, Vollzugriff und Keine lauten im englischen Read, Apply, Edit, FullEdit oder None. Die Berechtigung die man in den GPOs vergeben kann, muss in der englischen Schreibweise vergeben werden.


(c) 2003 - heute, Mark Heitbrink, weitere Informationen unter WebSite-Info\Copyright