如何使用 PowerShell 编辑组策略对象

最后更新于:

编辑组策略对象(GPO)对于维护安全、一致且合规的 IT 环境至关重要。GPO 使管理员能够集中强制执行安全基线,并在整个域中标准化用户和计算机配置。定期审查和更新 GPO 有助于弥补安全漏洞,确保配置随着运营需求的发展而演变。

本页介绍如何使用 PowerShell、Group Policy Management Console (GPMC) 和 ManageEngine ADManager Plus 有效编辑 GPO。

  • PowerShell
  • GPMC
  • ADManager Plus
  • 原生工具的限制
  • 为什么选择 ADManager Plus
  • 常见问题解答
 

如何使用 PowerShell 编辑现有 GPO

PowerShell 的 GroupPolicy 模块允许您修改 GPO 中基于注册表的策略设置,并报告 GPO 配置,而无需手动打开 GPMC。

前提条件

  • 确保在您的管理工作站或管理服务器上安装了RSAT (Remote Server Administration Tool)GroupPolicy PowerShell模块。
  • 以足够权限运行PowerShell,例如域管理员、企业管理员或委派的GPO编辑权限。
  • Import the GroupPolicy module by running:
    Import-Module GroupPolicy

使用 PowerShell 编辑 GPO

大多数编辑通过使用 Set-GPRegistryValue cmdlet 更改基于注册表的策略设置,或通过 Set-GPLinkSet-GPPermission 等 cmdlet 管理链接和权限来完成。

示例 1:启用现有 GPO 中的设置(注册表值)

此脚本配置 Workstation Security GPO 中的计算机级策略设置,将屏幕锁定超时设置为 900 秒。

$GpoName = "Workstation Security"
Set-GPRegistryValue -Name $GpoName `
-Key "HKLM\Software\Contoso\Security" `
-ValueName "ScreenLockTimeout" `
-Type DWord `
-Value 900

示例 2:创建新 GPO 并设置用户配置值

这将创建一个新的 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"

示例 3:编辑后生成 GPO HTML 报告

这将生成 GPO 的 HTML 报告,以验证应用的设置并与审计人员共享。

$GpoName = "Workstation Security"
Get-GPOReport -Name $GpoName -ReportType Html -Path "C:\Reports\WorkstationSecurity.html"

示例 4:编辑特定设置并推送到多个 DC

此脚本通过直接修改相应的注册表值更新两个计算机级 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

示例 5:在非域机器上设置本地组策略和安全设置

通过使用 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

GPMC 提供了浏览、编辑和链接 GPO 的图形界面方式。

在 GPMC 中编辑 GPO 的步骤

  1. Server Manager > ToolsStart 菜单打开 Group Policy Management (gpmc.msc)。
  2. 展开林和域,然后点击 Group Policy Objects
  3. 找到要编辑的 GPO,右键点击它,然后选择 Edit
  4. 在 Group Policy Management Editor 中,浏览 Computer ConfigurationUser Configuration 下找到要更改的设置。
  5. 双击策略,选择 EnabledDisabled,或根据需要配置选项,然后点击 OK
  6. 完成后关闭编辑器;更新的 GPO 将在下次刷新或登录/启动周期时应用。
使用 GPMC 编辑 GPO

使用 gpedit.msc 编辑本地 GPO 的步骤

  1. Win + R,输入 gpedit.msc,然后按 Enter
  2. 在本地组策略编辑器中,展开 Computer ConfigurationUser Configuration
  3. 通过 Administrative Templates(或相关节点)导航,找到要修改的策略。
  4. 双击策略,选择 EnabledDisabled,或根据需要调整配置,然后点击 OK
  5. 完成后关闭编辑器;更改将在下次刷新或登录/启动周期时生效。

如何使用 ADManager Plus 编辑 GPO

ADManager Plus 提供统一的基于网页的界面来管理 GPO,包括创建、链接、启用/禁用和更新 GPO,无需直接在 GPMC 中操作或使用 PowerShell 脚本。

  1. 导航至 Management > GPO Management > Manage GPOs
  2. In the 操作 column of the GPO that you would like to edit, click the edit icon.
    在 ADManager Plus 中导航到 GPO 管理页面以编辑 GPO
  3. Select the configuration that you would like to edit and modify its configuration.
    使用 ADManager Plus 编辑 Active Directory GPO

使用本地工具编辑 GPO 的限制

虽然功能强大,但仅依赖 PowerShell 和 GPMC 进行委派可能会带来若干挑战:

  • GPMC 不提供强大的批量编辑功能;在多个 GPO 中更改相同设置需要重复的手动操作。
  • PowerShell GPO cmdlet 主要针对基于注册表的设置,相较于图形界面,配置复杂或基于首选项的策略更具挑战性。
  • 本地工具需要特定的管理员权限来编辑 GPO,这可能限制委派并增加对特权账户的依赖。
  • 脚本更改必须经过仔细测试;Set-GPRegistryValuelink 操作中的错误可能会大规模引入配置错误。

使用ADManager Plus编辑GPO的优势

ADManager Plus 是一款 AD 管理报告解决方案,帮助管理员通过无脚本、易用的界面执行 GPO 管理任务

使用 ADManager Plus 轻松编辑和管理 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
Active Directory管理与报告的一站式解决方案
电子邮件下载链接 Email the ADManager Plus download link