编辑组策略对象(GPO)对于维护安全、一致且合规的 IT 环境至关重要。GPO 使管理员能够集中强制执行安全基线,并在整个域中标准化用户和计算机配置。定期审查和更新 GPO 有助于弥补安全漏洞,确保配置随着运营需求的发展而演变。
本页介绍如何使用 PowerShell、Group Policy Management Console (GPMC) 和 ManageEngine ADManager Plus 有效编辑 GPO。
PowerShell 的 GroupPolicy 模块允许您修改 GPO 中基于注册表的策略设置,并报告 GPO 配置,而无需手动打开 GPMC。
Import-Module GroupPolicy
大多数编辑通过使用 Set-GPRegistryValue cmdlet 更改基于注册表的策略设置,或通过 Set-GPLink 和 Set-GPPermission 等 cmdlet 管理链接和权限来完成。
此脚本配置 Workstation Security GPO 中的计算机级策略设置,将屏幕锁定超时设置为 900 秒。
$GpoName = "Workstation Security"
Set-GPRegistryValue -Name $GpoName `
-Key "HKLM\Software\Contoso\Security" `
-ValueName "ScreenLockTimeout" `
-Type DWord `
-Value 900
这将创建一个新的 GPO,并为自定义浏览器主页配置用户策略设置。
$Gpo = New-GPO -Name "Browser Hardening"
Set-GPRegistryValue -Guid $Gpo.Id `
-Key "HKCU\Software\Policies\Contoso\Browser" `
-ValueName "HomePage" `
-Type String `
-Value "https://intranet.contoso.com"
这将生成 GPO 的 HTML 报告,以验证应用的设置并与审计人员共享。
$GpoName = "Workstation Security"
Get-GPOReport -Name $GpoName -ReportType Html -Path "C:\Reports\WorkstationSecurity.html"
此脚本通过直接修改相应的注册表值更新两个计算机级 GPO 设置。执行后,可以使用远程监控和管理 (RMM) 工具或标准的 gpupdate /force 将更新的 GPO 应用到所有域控制器。
$GPOName = "Your GPO Name Here"
Set-GPRegistryValue `
-Name $GPOName `
-Key "HKLM\Software\Policies\Microsoft\Windows\System" `
-ValueName "GpNetworkStartTimeoutPolicyValue" `
-Type DWord `
-Value 60
Set-GPRegistryValue `
-Name $GPOName `
-Key "HKLM\Software\Policies\Microsoft\Windows\System" `
-ValueName "SyncForegroundPolicy" `
-Type DWord `
-Value 1
通过使用 Set-ItemProperty cmdlet,您可以直接修改这些值,以在未加入域的计算机上强制执行策略行为。此脚本通过更新相应的注册表键禁用对 Windows Update 的访问。
Set-ItemProperty `
-Path "HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate" `
-Name "DisableWindowsUpdateAccess" `
-Value 1
以下是用于在 PowerShell 中编辑 GPO 的关键参数。
| Cmdlet/参数 | 描述 |
|---|---|
| Set-GPRegistryValue | 编辑 GPO 中基于注册表的策略设置(计算机或用户配置)。 |
| -Name/-Guid | 通过显示名称或 GUID 标识目标 GPO。 |
| -Key | 指定 GPO 中的注册表键路径。 |
| -ValueName | 表示策略设置的注册表值名称。 |
| -Type | 注册表值类型,如 DWord, String, MultiString, 等。 |
| -Value | 分配给 GPO 中指定注册表值的数据。 |
| Get-GPOReport | 生成 GPO 设置的 XML 或 HTML 报告以供审查和审计。 |
| Set-GPLink | 将 GPO 链接或取消链接到站点、域或 OU,并控制链接强制。 |
| Set-GPPermission | 授予或修改用户、组或计算机对 GPO 的权限。 |
GPMC 提供了浏览、编辑和链接 GPO 的图形界面方式。
ADManager Plus 提供统一的基于网页的界面来管理 GPO,包括创建、链接、启用/禁用和更新 GPO,无需直接在 GPMC 中操作或使用 PowerShell 脚本。
虽然功能强大,但仅依赖 PowerShell 和 GPMC 进行委派可能会带来若干挑战:
ADManager Plus 是一款 AD 管理 和 报告解决方案,帮助管理员通过无脚本、易用的界面执行 GPO 管理任务。
要修改 GPO 本身,请使用 Set-GPRegistryValue cmdlet。要强制计算机立即应用更改,请使用 gpupdate /force cmdlet(针对本地计算机)或 Invoke-GPUpdate cmdlet(针对远程计算机)。
$GPOName = "Your GPO Name Here"
Set-GPRegistryValue `
-Name $GPOName `
-Key "HKLM\Software\Policies\Microsoft\Windows\System" `
-ValueName "SyncForegroundPolicy" `
-Type DWord `
-Value 1
Set-GPRegistryValue `
-Name $GPOName `
-Key "HKLM\Software\Policies\Microsoft\Windows\System" `
-ValueName "GpNetworkStartTimeoutPolicyValue" `
-Type DWord `
-Value 60
gpupdate /force
使用 GPMC 或通过 PowerShell 使用 Set-GPRegistryValue cmdlet 编程编辑 GPO。对于无脚本方案,ADManager Plus 提供集中式 GUI 来 管理所有 GPO 任务。
通过使用 Set-ItemProperty,您可以直接修改注册表以强制执行非域计算机上的策略行为。以下脚本通过更新相应的注册表键禁用对 Windows Update 的访问。请注意,这修改的是本地注册表,而非 AD GPO 对象。
Set-ItemProperty `
-Path "HKLM:\Software\Policies\Microsoft\Windows\WindowsUpdate" `
-Name "DisableWindowsUpdateAccess" `
-Value 1