GPO - Beispiele

Die Erstellung, Verknüpfung und Bearbeitung von Group Policy Objects (GPO) ist natürlich ebenfalls eine Technik für die PowerShell.

Verantwortlich ist hier das Modul GroupPolicy mit seinen gut zwei Dutzend Kommandos.

Wer es genau wissen will tippt wieder einmal Get-Command -Module GroupPolicy und erhält Antwort.

Referenzen: Neben den in der Literatur angegebenen Büchern verweise ich hier auch noch auf Buch Gruppenrichtlinien Voges, Dausch aus dem Hanser Verlag und eine recht schöne kompakte Website zum Thema Manage group policies with PowerShell.

Wir steigen mit ein paar Basisbefehlen ein.

Get-Command -Module GroupPolicy

Get-GPO -all
Get-GPO -Name "Name der GP"
Get-GPO -all | Where-Object { $_.displayname -ilike "d*" }  # ilike - ignore CaseSensitivity

# Default Domain Policy
Get-Gpo -Id 31b2f340-016d-11d2-945f-00c04fb984f9

# Default Domain Controllers Policy
Get-Gpo -Id 6ac1786c-016f-11d2-945f-00c04fb984f9

# List all GPOs
Get-Gpo -All

# Filter by name
Get-Gpo -All | Where-Object DisplayName -match "Default Domain"

Backup & Restore

# Datensicherung für alle bestehenden FBI-Gruppenrichtlinien
Get-GPO -all | where { $_.displayname -like "*FBI*" } | Backup-GPO -Path –"~\Desktop\GPO_backups"

# WiederherstellenRestore-GPO "GP FBI" -Path "~\Desktop\GPO_backups"
Restore-GPO "GP FBI" -Path "~\Desktop\GPO_backups"
Restore-GPO -all -Path "~\Desktop\GPO_backups"

Berichte

GPO-Berichte lassen sich in HTML und XML Formaten erstelllen. Der Vorteil bei XML ist die mögliche Weiterverarbeitung mit der PowerShell.

Get-GPOReport -Id 31b2f340-016d-11d2-945f-00c04fb984f9 -ReportType Html -Path ~\Desktop\Report.html
Get-GPOReport -Name "GPO NAME" -ReportType Xml -Path ~\Desktop\Report.xml

Erstellen und Ändern von GPOs und Verknüpfungen

# New GPO
New-GPO -Name "TESTING 01" -Comment "Joe B. with PowerShell"

# Object of GPO
$GPO = Get-Gpo -Name "TESTING 01"

# Create a new link
New-GPLink -Guid $GPO.Id -Target "OU=TestingOU,$((Get-ADDomain).DistinguishedName)" -LinkEnabled Yes -Order 1
# Change/Remove existing link
Set-GPLink -Guid $GPO.Id -Target "OU=TestingOU,$((Get-ADDomain).DistinguishedName)" -LinkEnabled No

# which GPOs are assigned to OU
Get-GPInheritance "OU=TestingOU,$((Get-ADDomain).DistinguishedName)"

Berechtigungen

# Which Permissions for OU
Get-GPPermission -Name "TESTING 01" -All

GPO vs. Registry

Im Grunde handelt es sich bei Gruppenrichtlinien um Registry-Tweaks basierend auf unterschiedlichen Vorlagen und Vorgehensweisen.

Der Vorlagen-Charakter wird besonders deutlich, wenn man sich in der Domäne mit den sogenannten Adminstrativen Vorlagen / Administrative Templates beschäftigt.

Als Beispiel für GPO vs. Registry ein kleines Beispiel.

Wir wollen den Windows Rechner automatisch sperren lassen.

GPO

Computerkonfiguration / Richtlinien / Windows-Einstellungen
  / Sicherheitseinstellungen / Lokale Richtlinien / Sicherheitsoptionen

Registry

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
# Sollte es den folgenden Wert
InactivityTimeoutSecs
# hier noch nicht geben, so muss er als DWORD 32-Bit Wert erstellt werden