Group Policy

Windows Server 2008 R2 tartományvezérlő verzióban nem csak az AD modul található meg, hanem a Group Policy kezelését lehetővé tevő GroupPolicy modul is. Nézzük, milyen cmdletek találhatók ebben a modulban:

PS C:\> Import-Module grouppolicy

PS C:\> Get-Command -Module grouppolicy

 

CommandType     Name                            Definition

-----------     ----                            ----------

Cmdlet          Backup-GPO                      Backup-GPO -Guid <Guid> -Pa...

Cmdlet          Copy-GPO                        Copy-GPO -SourceGuid <Guid>...

Cmdlet          Get-GPInheritance               Get-GPInheritance [-Target]...

Cmdlet          Get-GPO                         Get-GPO [-Guid] <Guid> [[-D...

Cmdlet          Get-GPOReport                   Get-GPOReport [-Guid] <Guid...

Cmdlet          Get-GPPermissions               Get-GPPermissions -Guid <Gu...

Cmdlet          Get-GPPrefRegistryValue         Get-GPPrefRegistryValue -Gu...

Cmdlet          Get-GPRegistryValue             Get-GPRegistryValue -Guid <...

Cmdlet          Get-GPResultantSetOfPolicy      Get-GPResultantSetOfPolicy ...

Cmdlet          Get-GPStarterGPO                Get-GPStarterGPO -Guid <Gui...

Cmdlet          Import-GPO                      Import-GPO -BackupId <Guid>...

Cmdlet          New-GPLink                      New-GPLink -Guid <Guid> -Ta...

Cmdlet          New-GPO                         New-GPO [-Name] <String> [-...

Cmdlet          New-GPStarterGPO                New-GPStarterGPO [-Name] <S...

Cmdlet          Remove-GPLink                   Remove-GPLink -Guid <Guid> ...

Cmdlet          Remove-GPO                      Remove-GPO -Guid <Guid> [-D...

Cmdlet          Remove-GPPrefRegistryValue      Remove-GPPrefRegistryValue ...

Cmdlet          Remove-GPRegistryValue          Remove-GPRegistryValue [-Gu...

Cmdlet          Rename-GPO                      Rename-GPO -Guid <Guid> -Ta...

Cmdlet          Restore-GPO                     Restore-GPO -BackupId <Guid...

Cmdlet          Set-GPInheritance               Set-GPInheritance [-Target]...

Cmdlet          Set-GPLink                      Set-GPLink -Guid <Guid> -Ta...

Cmdlet          Set-GPPermissions               Set-GPPermissions -Guid <Gu...

Cmdlet          Set-GPPrefRegistryValue         Set-GPPrefRegistryValue -Gu...

Cmdlet          Set-GPRegistryValue             Set-GPRegistryValue -Guid <...

Látható, hogy sajnos jórészt a Group Policy infrastruktúra üzemeltetésével kapcsolatos feladatokra vannak itt cmdletek, engem inkább maguknak a Group Policy objektumok kezelését megkönnyítő cmdletek érdekelnének, de ezek itt viszonylag csak a felszínt érintik. Például a Get-GPO  az nem olvas bele magának a GPO-nak a tartalmába, hanem csak a ’fejlécet’ adja vissza:

PS C:\> Get-GPO -All

 

 

DisplayName      : Default Domain Policy

DomainName       : r2.dom

Owner            : R2\Domain Admins

Id               : 31b2f340-016d-11d2-945f-00c04fb984f9

GpoStatus        : AllSettingsEnabled

Description      :

CreationTime     : 2012.03.18. 10:27:46

ModificationTime : 2012.03.18. 10:31:08

UserVersion      : AD Version: 0, SysVol Version: 0

ComputerVersion  : AD Version: 3, SysVol Version: 3

WmiFilter        :

 

DisplayName      : Default Domain Controllers Policy

DomainName       : r2.dom

Owner            : R2\Domain Admins

Id               : 6ac1786c-016f-11d2-945f-00c04fb984f9

GpoStatus        : AllSettingsEnabled

Description      :

CreationTime     : 2012.03.18. 10:27:46

ModificationTime : 2012.03.18. 10:27:46

UserVersion      : AD Version: 0, SysVol Version: 0

ComputerVersion  : AD Version: 1, SysVol Version: 1

WmiFilter        :

Ha hozunk létre az alaphelyzet szerinti GPO-k mellé továbbiakat, akkor érdemesebb táblázatos nézetbe váltani és kiemelni a legfontosabb tulajdonságokat a fejlécből:

[28] PS C:\> Get-GPO -All | ft displayname, modificationtime, gpostatus

 

DisplayName                ModificationTime                          GpoStatus

-----------                ----------------                          ---------

Default Domain Policy      2009. 11. 28. 20:55:46           AllSettingsEnabled

Default Domain Controll... 2010. 02. 19. 11:28:18           AllSettingsEnabled

Másik                      2010. 05. 11. 22:07:42           AllSettingsEnabled

Teszt                      2010. 05. 04. 19:42:06           AllSettingsEnabled

Ha a GPO-k tartalmát szeretnénk megragadni PowerShell segítségével, akkor a Get-GPOReport  cmdlet áll rendelkezésünkre. Sajnos ezzel csak olvasni tudjuk a GPO-k tartalmát, módosításra nincs cmdlet, azaz marad a Group Policy Management Console. A Get-GPOReport ráadásul nem is közvetlenül objektumokat ad vissza, hanem egy XML szöveget, amit nekünk kell objektummá alakítani:

[6] PS C:\> $t = [xml] (Get-GPOReport teszt -ReportType xml)

[7] PS C:\> $t

 

xml                                               GPO

---                                               ---

version="1.0" encoding="utf-16"                   GPO

Elég összetett szerkezetű ez az XML objektum, elég mélyre kell ásnunk, hogy a tényleges beállításokig eljussunk:

[14] PS C:\> $t.GPO

 

 

xsi                 : http://www.w3.org/2001/XMLSchema-instance

xsd                 : http://www.w3.org/2001/XMLSchema

xmlns               : http://www.microsoft.com/GroupPolicy/Settings

Identifier          : Identifier

Name                : Teszt

IncludeComments     : true

CreatedTime         : 2010-05-04T17:33:50

ModifiedTime        : 2010-05-04T17:42:06

ReadTime            : 2010-05-11T20:01:04.720125Z

SecurityDescriptor  : SecurityDescriptor

FilterDataAvailable : true

Computer            : Computer

User                : User

LinksTo             : LinksTo

 

 

 

[15] PS C:\> $t.GPO.User

 

VersionDirectory    VersionSysvol       Enabled             ExtensionData

----------------    -------------       -------             -------------

2                   2                   true                ExtensionData

 

 

[16] PS C:\> $t.GPO.User.ExtensionData

 

Extension                               Name

---------                               ----

Extension                               Registry

 

 

[17] PS C:\> $t.GPO.User.ExtensionData.Extension

 

q1                         type                      Policy

--                         ----                      ------

http://www.microsoft.co... q1:RegistrySettings       {Hide Settings tab, Ad...

 

[19] PS C:\> $t.GPO.User.ExtensionData.Extension.Policy | ft name, state, categ

ory -AutoSize

 

Name                         State   Category

----                         -----   --------

Hide Settings tab            Enabled Control Panel/Display

Add Logoff to the Start Menu Enabled Start Menu and Taskbar

Látható, hogy a GPO beállítások különböző a grafikus felületen is látható szerkezetbe vannak szervezve, azaz User vagy Computer ág, azon belül a különböző Extension szekciók tárolják a különböző Group Policy agenteknek szóló házirendeket. Talán a legegyszerűbben kezelhetők a Registry alapú GPO beállítások, ezek ugye a GPMC eszközben az ’Administative Templates’ alatt található beállításokat jelentik.

Ha már átalakítottuk az XML szöveget XML adattá, akkor már élhetünk a PowerShell objektumkezelő szolgáltatásaival, mint például az objektumok összehasonlításával:

[20] PS C:\> $m = [xml] (Get-GPOReport másik -ReportType xml)

[22] PS C:\> Compare-Object $t.GPO.User.ExtensionData.Extension.Policy $m.GPO.U

ser.ExtensionData.Extension.Policy -Property name, state -IncludeEqual

 

name                       state                     SideIndicator

----                       -----                     -------------

Hide Settings tab          Enabled                   ==

Prohibit access to the ... Enabled                   =>

Add Logoff to the Start... Enabled                   <=

A fenti példában látható, hogy a korábban kiolvasott GPO objektum és egy másik GPO objektum a Compare-Object cmdlet segítségével például egész jól összehasonlítható, így könnyebben felderíthetők ez eltérések két GPO között, mintha azt a grafikus felületen próbálnánk.

 



Word To HTML Converter