W większości szkoleń autoryzowanych Microsoft do konfiguracji i zarządzania obiektami zasad grupy (GPO) korzystaliśmy z konsoli graficznej Group Policy Management. Dlatego też na pierwszy rzut oka może wydawać się, że raczej w niewielkim zakresie możemy zarządzać obiektami zasad grupy za pomocą PowerShella.
Udostępnij!
Z przyzwyczajenia standardowo uruchamiamy konsolę graficzną, nawet jeśli wykonywane zadania mogą być żmudne czasowo. I tak w ramach tego narzędzia możemy między innymi wykonywać następujące zadania np.:
- Tworzenie nowych obiektów GPO
- Tworzenie łączy do istniejących obiektów GPO
- Zarządzanie zadaniami kopii zapasowej dla obiektów GPO
- Tworzenie filtrów WMI
- Tworzenie obiektów startowych GPO
- Aktualizacja obiektów zasad grupy na poziomie jednostki organizacyjnej
- Wyświetlanie wynikowych obiektów zasad grupy w trybie modelowania i w trybie wynikowym
- Przypisywanie uprawnień do obiektów zasad grupy dla grup zabezpieczeń
- Uruchomienie edytora obiektów zasad grupy dla konkretnej polityki
Czy któreś z tych zadań możemy wykonać za pomocą PowerShella?
W toku pracy z konsolą Group Policy Managament okazuje się, że część czynności jest niemożliwa do wykonania. Tutaj dobrym przykładem jest opcja utworzenia kopii zapasowej obiektów GPO. Niestety ta kopia nie zapisuje łączy danego obiektu GPO do lokacji, domeny czy też jednostki organizacyjnej, gdyż działa wyłącznie na poziomie kontenera Group Policy Object. I tu z pomocą przychodzi nam PowerShell. Okazuje się, że wiele czynności możemy usprawnić bądź też nawet zautomatyzować, co jest niedostępne z trybu graficznego.
Co powinniśmy zrobić, by mieć dostęp do poleceń PowerShell dotyczących zasad grupy?
W tym przypadku rozważymy, z jakiego systemu będziemy zarządzać obiektami zasad grupy:
- Kontroler domeny z interfejsem graficznym – po wypromowaniu kontrolera domeny mamy automatycznie dostęp do modułu PowerShell o nazwie GroupPolicy.
- Kontroler domeny na systemie w wersji Core – należy wykonać następujące polecenie:
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Moduł PowerShell GroupPolicy jest już dostępny.
- Zarządzanie politykami z systemów klienckich Windows 10 lub Windows 11 – instalujemy narzędzia RSAT. Dlatego też z punktu widzenia elastyczności zarządzania obok narzędzi do zarządzania konsolą Server Manager i Active Directory należy zainstalować narzędzia, do zarządzania obiektami zasad grupy. Najlepiej zadanie to wykonać z poziomu konsoli PowerShell.
Add-WindowsCapability -Online -Name Rsat.ServerManager.Tools~~~~0.0.1.0
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0
- Windows Server dodany do domeny – Group Policy Management jest dodawany jako odrębna funkcjonalność, a nie w ramach Remote Server Administration Tools. Można to również wykonać za pomocą PowerShella poleceniem:
Install-WindowsFeature -Name gpmc
Jak pokazałem powyżej niezależnie, z jakiego systemu będziemy zarządzali obiektami zasad grupy, w każdym analizowanym przypadku mamy dostęp do modułu PowerShell o nazwie GroupPolicy. Poniższa komenda dostarcza nam informacji o zainstalowanym module.
Get-Module -ListAvailable -Name GroupPolicy
Bardziej szczegółowych informacji dostarcza polecenie:
Get-Command -Module GroupPolicy
Jak widać poniżej mamy szereg dostępnych poleceń. Lista poleceń prezentuje się całkiem obiecująco. Teraz spróbujemy pokazać co możemy zrobić za pomocą PowerShella.
Nowy obiekt GPO
Zadania do wykonania:
- Utworzenie nowego obiektu
- Utworzenie łącza obiektu do jednostki organizacyjnej
- Ustawienie uprawnień do obiektu dla grupy zabezpieczeń
Czyli w jednym poleceniu wykorzystamy trzy cmdlety.
New-GPO -Name „Marketing Standard Computer” | New-GPLink -Target ‚ou=marketing,dc=altkom,dc=com’ | Set-GPPermission -PermissionLevel GpoEditDeleteModifySecurity -TargetName ‚IT’ -TargetType Group
Wyświetlenie łączy do obiektów GPO
Zadania do wykonania:
- 1. Wyświetlenie łączy obiektów do domeny
Get-GPInheritance -Target ‚dc=altkom,dc=com’
- 2. Wyświetlenie łączy obiektów do jednostek organizacyjnych
Get-ADOrganizationalUnit -Filter * | Select-Object -ExpandProperty Name | ForEach-Object -Process {Get-GPInheritance -Target „ou=$psitem,dc=altkom,dc=com”}
- 3. Bardziej szczegółowe informacje dotyczące łączy obiektów zasad grupy do jednostek organizacyjnych
Get-ADOrganizationalUnit -Filter * | Select-Object -ExpandProperty Name | ForEach-Object -Process {Get-GPInheritance -Target „ou=$psitem,dc=altkom,dc=com”} | Select-Object -ExpandProperty GpoLinks
- 4. Wyświetlenie tylko łączy do jednostek organizacyjnych
Get-ADOrganizationalUnit -Filter * | Select-Object -ExpandProperty Name | ForEach-Object -Process {Get-GPInheritance -Target „ou=$psitem,dc=altkom,dc=com”} | Select-Object -ExpandProperty GpoLinks | Select-Object -Property DisplayName,Target
Wylistowanie obiektów GPO
Zadania do wykonania:
- 1. Wyświetlenie wszystkich obiektów GPO
Get-GPO -All
- 2. Stworzenie listy wszystkich obiektów GPO, dla których konfiguracja użytkownika nie została skonfigurowana. Do tego celu został wykorzystany moduł z PowerShell Gallery o nazwie GroupPolicyHelper (Moduły z PowerShell Gallery będą przedmiotem kolejnych artykułów).
Get-GPO -All | Select-Object -ExpandProperty DisplayName | ForEach-Object -Process { Get-GphEmptyGPO -Scope NoUsersettings -name $PSItem } | Select-Object -ExpandProperty DisplayName | Out-File c:\temp\GPOEmptyUser.txt
- 3. Zablokowanie przetwarzania ustawień użytkownika dla wszystkich obiektów GPO, gdzie ta konfiguracja jest pusta.
Get-Content C:\temp\GPOEmptyUser.txt | ForEach-Object -Process { (Get-GPO -Name $PSItem).GpoStatus = „UserSettingsDisabled” }
Get-Content C:\temp\GPOEmptyUser.txt | ForEach-Object -Process { Get-GPO -Name $PSItem } | Select-Object DisplayName,GPOStatus
Dodanie komentarza do obiektu GPO
Zadania do wykonania:
- Przekazanie do zmiennej treści komentarza w osobnych liniach.
$Description = @”
- Konfiguracja przekierowania katalogu „Documents”
- Blokada dostępu do Control Panel
- Konfiguracja ustawień przeglądarki Microsoft Edge
„@
- Dodanie komentarza do obiektu GPO.
(Get-GPO -Name „Marketing Standard Computer”).Description = $Description
- Wyświetlenie wyniku.
(Get-GPO -Name „Marketing Standard Computer”).Description
Zaprezentowane powyżej operacje są tylko fragmentem możliwości zarządzania GPO za pomocą PowerShella. W kolejnych częściach postaram się przybliżyć kolejne funkcjonalności PowerShell w zakresie zarządzania GPO.
Nasze szkolenie z GPO
Zainteresowanych tematyką Group Policy Management zapraszamy na autorskie szkolenie „Managing Windows 2022 Environments with Group Policy”!