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