Blog: Systemy microsoft | Powershell

Group Policy Object a PowerShell – część 1

Group Policy Object a PowerShell – część 1
  • 726 views

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:

  1. Kontroler domeny z interfejsem graficznym – po wypromowaniu kontrolera domeny mamy automatycznie dostęp do modułu PowerShell o nazwie GroupPolicy.
  2. 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.

  1. 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

  1. 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:

  1. Utworzenie nowego obiektu
  2. Utworzenie łącza obiektu do jednostki organizacyjnej
  3. 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:

  1. Przekazanie do zmiennej treści komentarza w osobnych liniach.

$Description = @”

  1. Konfiguracja przekierowania katalogu „Documents”
  2. Blokada dostępu do Control Panel
  3. Konfiguracja ustawień przeglądarki Microsoft Edge

„@

  1. Dodanie komentarza do obiektu GPO.

(Get-GPO -Name „Marketing Standard Computer”).Description = $Description

  1. 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”!