PowerShell a Group Policy

PowerShell ve Windows 2008 R2 přišel konečně s implementací příkazů pro správu Active Directory – AD Module for Windows PowerShell. Tato funkčnost byla již dříve řešena poměrně dobře dvěma přístupy, jednak komunitou (PSCX) a pak také firmou Quest Software. Podíval jsem se na možnosti správy zásad skupiny, tedy objektů Group Policy. Nechal jsem se inspirovat knihou Patrika Maliny.

Příkazy, které máme k dispozici – CmdLets jsou přehledně uvedeny zde. Po spuštění modulu AD však nejsou k dispozici  a musíme je nejprve importovat:

import-module grouppolicy

Seznam příkazů zobrazí

get-command –module grouppolicy

Všechny objekty GP vypíšeme:

get-gpo –all

Veškerá nastavení politik uložíme do souboru ve formátu html:

Get-GPOReport -ReportType html -All | Set-Content c:\temp\all_gpos.html

Výsledné uplatnění pro konkrétního uživatele nebo konkrétní server uložíme:

Get-GPResultantSetOfPolicy -computer dc02 -ReportType html -Path c:\temp\dc02_rsop.html

Get-GPResultantSetOfPolicy -User administrator -ReportType html -Path c:\temp\admin_rsop.html
RsopMode        : Logging
Namespace       : \\DC02\Root\Rsop\NS4AEB272C_D982_44B8_94DF_A02D868E4642
LoggingComputer : DC02
LoggingUser     : administrator
LoggingMode     : User

Dále se podíváme na OUs – Organizational Units a dědění nastavení GP. Přehled OU nám zobrazí příkaz:

Get-ADOrganizationalUnit -Filter * | ft name, distinguishedname -AutoSize

name               distinguishedname
----               -----------------
Domain Controllers OU=Domain Controllers,DC=studio,DC=cs
Servers            OU=Servers,DC=studio,DC=cs
Workstations       OU=Workstations,DC=studio,DC=cs

Připojené objekty a děděná nastavení zobrazíme:

Get-ADOrganizationalUnit -Filter * | Get-GPInheritance | fl name, path, gpoinheritanceblocked, gpolinks, inheritedgpolinks

 

Name                  : domain controllers
Path                  : ou=domain controllers,dc=studio,dc=cs
GpoInheritanceBlocked : False
GpoLinks              : {Default Domain Controllers Policy}
InheritedGpoLinks     : {Default Domain Controllers Policy, Default Domain Poli
cy}

 

Name                  : servers
Path                  : ou=servers,dc=studio,dc=cs
GpoInheritanceBlocked : False
GpoLinks              : {GP_Servers}
InheritedGpoLinks     : {GP_Servers, Default Domain Policy}

 

Name                  : workstations
Path                  : ou=workstations,dc=studio,dc=cs
GpoInheritanceBlocked : False
GpoLinks              : {GP_XP_computer}
InheritedGpoLinks     : {GP_XP_computer, Default Domain Policy}

A jak je to s oprávněními k objektům? Např. pro politiku gp_xp_computer :

get-gpo -Name gp_xp_computer | Get-GPPermissions -All

Trustee     : Authenticated Users
TrusteeType : WellKnownGroup
Permission  : GpoApply
Inherited   : False

 

Trustee     : Domain Admins
TrusteeType : Group
Permission  : GpoEditDeleteModifySecurity
Inherited   : False

 

Trustee     : Enterprise Admins
TrusteeType : Group
Permission  : GpoEditDeleteModifySecurity
Inherited   : False

 

Trustee     : ENTERPRISE DOMAIN CONTROLLERS
TrusteeType : WellKnownGroup
Permission  : GpoRead
Inherited   : False

 

Trustee     : SYSTEM
TrusteeType : WellKnownGroup
Permission  : GpoEditDeleteModifySecurity
Inherited   : False

A naopak oprávnění konkrétní skupiny ke všem GPO?

get-gpo -all | ForEach-Object {„$($_.displayname): $((get-gppermissions -targettype group -targetname „Authenticated Users“ -name $_.
displayname).permission)“}

GP_Servers: GpoApply
GP_XP_computer: GpoApply
Default Domain Policy: GpoApply
Default Domain Controllers Policy: GpoApply

Nový prázdný objekt GP vytvoříme:

New-GPO -Name GP_Win2008_Server

DisplayName      : GP_Win2008_Server
DomainName       : studio.cs
Owner            : STUDIO\Domain Admins
Id               : 64a97483-51dc-4811-bf89-a579e9a2cb49
GpoStatus        : AllSettingsEnabled
Description      :
CreationTime     : 7.1.2011 10:20:03
ModificationTime : 7.1.2011 10:20:03
UserVersion      : AD Version: 0, SysVol Version: 0
ComputerVersion  : AD Version: 0, SysVol Version: 0
WmiFilter        :

A připojíme

New-GPLink -Name GP_Win2008_Server -Target „ou=servers,dc=studio,dc=cs“ -linkenabled yes

GpoId       : 64a97483-51dc-4811-bf89-a579e9a2cb49
DisplayName : GP_Win2008_Server
Enabled     : True
Enforced    : False
Target      : OU=Servers,DC=studio,DC=cs
Order       : 2

Objekt GP můžeme kopírovat a vytvořit zcela nový GPO:

Copy-GPO -SourceName GP_Win2008_Server -TargetName GP_Exchange_Server

ZÁLOHA A OBNOVA GPO

Backup-GPO -All -path c:\temp\gpos\

Restore-GPO -Path C:\temp\gpos -Name GP_XP_Computer

Poznámka:

Podmínkou je domain controller Windows Server 2008 R2 nebo Windows Server 2008 R2 s instalovanou správou Group Policy Management nebo Windows 7 a nástroje Remote Server Administration Tools

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *