Einstellungen in GPOs finden über die GUI und mit PowerShell

    Teaser-Bild für GPOWenn man in einer Domäne viele GPOs definiert hat, dann ist es oft schwierig nachzuvollziehen, welches Objekt eine bestimmte Einstellung setzt. Die Gruppen­richt­linien­verwaltung bietet eine Suchfunktion, die hier helfen kann. Wenn diese nicht reicht, dann empfiehlt sich PowerShell als Alternative.

    Zwar ist es Best Practice, beim Erstellen von GPOs einem klaren Konzept zu folgen und nur logisch zusammen­gehörige Einstellungen in einem Objekt zu gruppieren. Dennoch kann es passieren, dass auf PCs eine Einstellung konfiguriert wird und sich nicht auf Anhieb erkennen lässt, von welchem GPO sie stammt.

    Suche in der Gruppenrichtlinienverwaltung

    Die Gruppen­richt­linien­verwaltung verfügt über eine wenig bekannte Such­funktion, die sich im Kontextmenü der Gesamtstruktur und von Domänen findet. Der Befehl öffnet einen Dialog, in dem man die Suchkriterien aus vorgegebenen Listen auswählen kann.

    Die Suche enthält jedoch kein Eingabefeld für beliebige Begriffe, so dass sie keine Volltextrecherche nach einzelnen Einstellungen erlaubt. Eine solche ist nur in den Namen der GPOs vorgesehen.

    GPOs lassen sich bei den Einstellungen in der Computerkonfiguration nur anhand von Kategorien filtern.

    Ansonsten kann man die Liste der GPOs nur anhand der vorgegebenen Werte eingrenzen, etwa indem man sich solche anzeigen lässt, die mit einem bestimmten WMI-Objekt verknüpft sind oder die Einstellungen in der Computer­konfiguration definiert haben.

    Letztere kann man weiter filtern, allerdings nicht auf Basis sämtlicher verfügbarer Einstellungen, sondern anhand logischer Gruppen. Bei dieser thematischen Sammlung fällt es jedoch häufig schwer, die richtige Auswahl zu treffen, um ein GPO mit einer bestimmten Einstellung zu finden.

    Die Gruppenrichtlinienverwaltung erlaubt seit Windows 8.1 keine Suche in den Benutzereinstellungen mehr.

    Eine zusätzliche Einschränkung dieser Suche besteht darin, dass sie seit Windows 8.1 keinen Einblick mehr in den Zweig Benutzerkonfiguration gewährt. Wählt man diesen im Feld Suchelement aus, dann verschwindet die Liste mit den Kriterien und eine Suche ist dann nicht mehr möglich.

    GPOs filtern mit PowerShell

    Möchte man ganz konkret herausfinden, welche Einstellungen in welchen GPOs konfiguriert sind, dann kann PowerShell diese Aufgabe unter allen Bordmitteln noch am besten erledigen. Allerdings erfordert auch sie einigen Aufwand, weil das Cmdlet Get-GPO nur einen Teil der GPO-Eigenschaften zurückgibt. Die in einem Objekt enthaltenen Einstellungen gehören nicht dazu.

    Als Ausweg bietet sich daher an, mit Get-GPOReport einen XML-Bericht zu generieren und aus diesem die benötigten Informationen auszulesen.

    In einer einfachen Variante kann man über alle GPOs einer Domäne iterieren und für jedes von ihnen einen Report erzeugen. Anschließend gibt man eine vollständige Liste aller GPOs inklusive der darin enthaltenen Einstellungen aus:

    Während sich der Name des GPO relativ einfach aus dem DOM entnehmen lässt, bemüht dieses Script Select-XML und einen XPath-Ausdruck, um die Namen der Einstellungen auszulesen. Dieser Befehl muss zudem den Namespace q1 angeben, den Microsoft im GPO-Report verwendet.

    Textsuche mit XPath

    Möchte man gezielt nach dem Namen einer Einstellung suchen, dann kann man sich dafür die entsprechende Fähigkeit von XPath zunutze machen. Die Funktion contains sorgt dafür, dass der Ausdruck nur auf jene Elemente zutrifft, deren Textknoten den gewünschten String enthalten.

    Für eine flexible Lösung definiert man am besten eine Funktion, die den Suchbegriff als Argument akzeptiert. Dieses übergibt man dann an den Parameter XPath:

    Ruft man die Funktion etwa mit

    Get-GPOSetting("Cortana")

    auf, dann erhält man alle GPOs, die Einstellungen für Cortana definieren. Dabei reicht es auch aus, nur einen Teil der Zeichenkette anzugeben.

    Keine Kommentare