Tags: Gruppenrichtlinien, Troubleshooting, PowerShell
Beim GPO-Troubleshooting kann es vorkommen, dass man Einstellungen finden möchte, die von den lokalen Gruppenrichtlinien gesetzt werden. Mit rsop.msc steht dafür ein grafisches Werkzeug zur Verfügung. Effizienter ist es in der Regel jedoch, einen Report mit gpresult.exe zu erzeugen und diesen mit PowerShell auszuwerten.
Bei Konflikten zwischen lokalen Gruppenrichtlinien und solchen auf Domänenebene setzen sich letztere durch, weil sie erst nach den lokalen ausgeführt werden und so eventuell vorhandene Einstellungen überschreiben.
Wenn man aber zum Beispiel ein GPO im AD deaktiviert, dann kann der erwartete Effekt ausbleiben, weil eine lokale Richtlinie dazwischenfunkt. Abgesehen davon kann es interessant sein, sich einen Überblick über die konfigurierten Einstellungen zu verschaffen, etwa auf Workgroup-Rechnern.
Wie kann man lokale Gruppenrichtlinien auf einem Rechner anzeigen? Dafür bieten sich diese Verfahren an:
- Klicken durch den Verzeichnisbaum von RSOP
- Auswertung des Berichts von gpresult /r mittels RegEx
- Erstellen eines XML-Reports und dessen Analyse mit PowerShell
Lokale Richtlinien in RSOP finden
Wenn man dafür ein grafisches Tool verwenden möchte, dann bietet sich rsop.msc an. Auf einem Workgroup-Rechner mit relativ wenigen Richtlinien findet man hier schnell die konfigurierten Einstellungen.
Ist der Rechner jedoch Mitglied in einer Domäne, dann muss man sich praktisch durch den ganzen Baum arbeiten, um zu schauen, ob eine Einstellung aus der Domäne oder einer lokalen Policy stammt.
Auswertung der Textausgabe von gpresult
Das Standard-Tool für das GPO-Reporting ist gpresult.exe. Der Aufruf von
gpresult /r
zeigt unter Angewendete Gruppenrichtlinienobjekte nur, ob sich dabei auch lokale befinden ("Richtlinien der lokalen Gruppe"). Die damit konfigurierten Einstellungen erfährt man so aber nicht.
Mehr Auskünfte erteilt das Tool, wenn man es mit dem Schalter /v aufruft. Anstatt die relevanten Einträge selbst zu suchen, kann man diese mit einem RegEx ausfiltern:
gpresult /r /v > gpr.txt
Get-Content -Raw gpr.txt |
Select-String '(?s)Gruppenrichtlinienobjekt: Local Group Policy.*?Aktiviert' -AllMatches |
Foreach {$_.matches} | Format-List @{n="Einstellung";e={$_.value}}
Die Ausgabe ist jedoch nicht besonders übersichtlich und es fehlen Informationen wie etwa der Pfad innerhalb des GPO-Editors, unter dem die betreffende Einstellung zu finden ist.
XML-Report mit PowerShell untersuchen
Alternativ zu einer bloßen Textausgabe kann gpresult.exe einen strukturierten Report im XML-Format erstellen, der sich dann mit PowerShell gut auswerten lässt:
gpresult /X gpr.xml
[XML]$XMLRep = Get-Content -Raw .\gpr.xml
$XMLRep.Rsop.ComputerResults.ExtensionData.Extension.Policy |
where {$_.GPO.Identifier.'#text' -eq "LocalGPO"} |
Format-List @{n="Name";e={$_.name}}, @{n="Pfad";e={"Computer - " + $_.Category}}
Das obige Code-Beispiel extrahiert lokal gesetzte Richtlinien aus dem Zweig Computer. Möchte man zusätzlich die Einstellungen für Benutzer finden, dann führt man anschließend diesen Befehl aus:
$XMLRep.Rsop.UserResults.ExtensionData.Extension.Policy |
where {$_.GPO.Identifier.'#text' -eq "LocalGPO"} |
Format-List @{n="Name";e={$_.name}}, @{n="Pfad";e={"Benutzer - " + $_.Category}}
Die Ausgabe der beiden Kommandos enthält den Namen der Einstellungen sowie deren Pfad im GPO-Editor. Bei Bedarf kann man noch weitere Elemente hinzunehmen, so befindet sich etwa der gesamte Hilfetext für jede Einstellung im XML-Report.
Zusammenfassung
Wenn man herausfinden möchte, welche Einstellungen durch lokale Gruppenrichtlinien gesetzt werden, dann kann man auf Workgroup-PCs zu rsop.msc greifen.
Sind Rechner Mitglieder in einer Domäne, dann ist das grafische Tool zu umständlich. In diesem Fall kann man unterschiedliche Reports mit gpresult.exe erzeugen und diese mit PowerShell auswerten. Am besten gelingt dies mit strukturierten Dateien im XML-Format.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- PowerShell für Logon-Scripts verwenden
- Resolve-DnsName: nslookup für PowerShell
- Defender Antivirus konfigurieren: Ausschlüsse, Echtzeitschutz, Scan-Verhalten und Reaktion auf Bedrohungen
- Microsoft Defender: Updates für Viren-Signaturen über Gruppenrichtlinien und PowerShell steuern
- Windows-Sicherheit öffnet sich nicht: Store-App mit PowerShell zurücksetzen
Weitere Links