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.