如何强制更新组策略

最后更新于:

什么是 gpupdate?

gpupdate 是一个命令,用于手动刷新本地或域加入计算机上的组策略设置,立即应用新的或更改的配置,而不是等待默认的后台刷新周期。

组策略对象 (GPOs) 是一组控制 Active Directory (AD) 环境中用户和计算机行为的设置。默认情况下,Windows 每 90 分钟自动刷新组策略一次,带有最多 30 分钟的随机偏移,并且在每次用户登录或计算机重启时刷新,而域控制器 (DCs) 每五分钟刷新一次自己的策略。

但是,有时 IT 管理员需要立即应用更新的策略,而无需等待下一个刷新周期。在这种情况下,使用 gpupdate 命令及其 /force 开关来强制策略更新,为管理员提供按需触发刷新的一种方式。

  • gpupdate
  • GPMC
  • ADManager Plus
  • 排错技巧
  • 为什么选择 ADManager Plus?
  • 常见问题解答
 

gpupdate 语法和参数

以下是 gpupdate 命令的语法:

gpupdate [/target:{computer | user}] [/force] [/wait:<value>] [/logoff] [/boot] [/sync] [/?]

参数

参数 描述
/target:{computer | user} 限制刷新仅针对计算机或用户策略设置。当只有一方被修改时,使用此参数可加快更新速度。
/wait:<value> 指定等待策略处理完成后返回命令提示符的秒数。默认值为 600 秒。设置为 0 表示立即返回而不等待,设置为 -1 表示无限等待。
/logoff 组策略更新完成后注销当前用户。
/boot 组策略更新完成后重启计算机。
/sync 确保下一次用户登录或计算机启动时的前台策略应用同步运行,确保在策略处理完成之前桌面不会加载。指定 /sync 时,/force 和 /wait 参数将被忽略。
/? 显示 gpupdate 命令的帮助信息,列出所有可用参数及其语法。

gpupdate 和 gpupdate /force 有什么区别?

gpupdate 执行增量刷新,检查自上次更新以来的新策略或更改的策略,并仅应用这些策略。另一方面,gpupdate /force 会重新应用分配给计算机和用户的所有策略,无论是否有更改。您可以在更改策略后使用 gpupdate 进行常规刷新,当怀疑策略未正确应用或需要恢复未经授权的本地更改时,使用 gpupdate /force。

方面 gpupdate gpupdate /force
更新内容 仅新策略和更改的策略 所有策略,无论是否修改
处理范围 增量处理,跳过未更改的设置 重新应用所有策略
DC 负载 较高,因为传输的数据更多
速度 较快 较慢
使用场景 策略更改后的常规刷新 紧急策略部署、排查策略应用问题及恢复未经授权的本地更改
风险 最小;仅重新处理更改的策略,因此 DC 和网络负载较低 在大型环境中更为明显;每个分配的 GPO 都会为每个客户端重新处理,如果同时在多台机器上运行,可能会给 DC 造成压力并增加网络流量。

gpupdate 是如何工作的?

当您运行 gpupdate 时,会发生以下顺序:

  1. 策略请求: 命令向 DC 发送请求,询问自上次刷新以来是否有新的或更改的组策略设置。
  2. 策略处理: DC 返回适用的 GPO,这些 GPO 会根据 GPO 处理顺序 进行处理。
  3. 策略应用: 系统将更改应用到相关的用户和计算机配置。
  4. 重启或注销通知: 如果有任何设置需要用户注销或系统重启才能生效(例如通过组策略进行的软件部署),命令将相应提示您。

如何运行 gpupdate

  1. 以管理员身份运行命令提示符。
  2. To refresh only changed policies, run:
    gpupdate
  3. To force-reapply all policies, run:
    gpupdate /force
  4. Enter 并等待确认消息。

gpupdate 也可以在没有管理员权限的情况下运行以刷新用户级别策略,但计算机策略设置需要提升权限。

使用 gpupdate 强制更新 Group Policies

如何使用 gpupdate 仅针对用户策略

若只刷新用户端组策略设置而不处理计算机策略,请使用 /target:user 参数。当您仅对 GPO 中的用户配置设置(如桌面限制、登录脚本或文件夹重定向)进行了更改,并希望更快刷新且不触发完整的计算机端策略周期时,此方法非常有用。

gpupdate /target:user
运行 gpupdate 仅更新用户策略

如何使用 gpupdate 仅针对计算机策略

若只刷新计算机端组策略设置而不处理用户策略,请使用 /target:computer 参数。当您对计算机配置设置(如安全基线、启动脚本或软件部署)进行了更改,并希望应用这些更改而无需完整刷新时,此方法非常有用。

gpupdate /target:computer
运行 gpupdate 仅更新计算机策略

示例脚本和用例

示例 1:强制更新所有 GPO 并自动注销

gpupdate /force /logoff

示例 2:运行时不等待完成

gpupdate /force /wait:0

示例 3:强制更新 GPO 并重启计算机

gpupdate /force /boot

示例 4:强制下一次登录同步应用组策略

gpupdate /sync

如何使用 Invoke-GPUpdate 命令

Invoke-GPUpdate 是一个 PowerShell 命令,允许您在一台或多台远程计算机上触发组策略刷新,而无需逐台登录。它通过调度远程任务在目标上运行 gpupdate /force 实现。

前提条件

但此命令需要满足以下条件:

  • 目标机器必须启用 Windows Remote Management。
  • 防火墙规则必须允许在 TCP 端口 135、137、138、139 和 445 上创建远程计划任务。
  • 您必须拥有远程计算机的管理员权限。

更新远程计算机策略的步骤

  1. To force update on a single remote computer:
    Invoke-GPUpdate -Computer
  2. Force update on all computers in an OU:
    Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=corp,DC=local" | ForEach-Object { Invoke-GPUpdate -Computer $_.Name -Force -RandomDelayInMinutes 0 }

如何验证组策略是否已应用

运行 gpupdate 后,您可以使用 gpresult 命令确认更新是否正确应用。

查看当前用户和计算机已应用策略的摘要:

gpresult /r

如何使用 GPMC 强制组策略更新

组策略管理控制台(GPMC)是一个 MMC 插件,可用于管理 GPO。它内部使用 gpupdate /force 触发 OU 内所有计算机的强制组策略更新,并应用最多 10 分钟的随机延迟,以分散 DC 的负载。

GPMC 方法针对所选 OU 及其嵌套的所有 OU 中的所有计算机,但无法针对单个计算机或默认的 Computers 容器。

使用 GPMC 强制组策略更新的步骤

  1. Win + R,输入 gpmc.msc,然后按 Enter
  2. 在左侧窗格中,展开您的林和域,然后展开 GPOs 或导航到相关的域结构。
  3. 找到包含您要更新的计算机的 OU。
  4. 右键单击该 OU,选择 组策略更新。
  5. 强制组策略更新 对话框中,点击 以确认。
  6. 远程组策略更新结果 窗口将打开,显示 OU 中每台计算机的调度状态。

结果窗口显示更新是否成功调度,但不显示策略是否成功应用。要验证实际的策略应用,请使用 gpresult 命令或检查事件查看器中的 GroupPolicy\Operational 日志。

如何使用 ADManager Plus 强制更新组策略

虽然 gpupdate 命令和 GPMC 适用于小规模更新,但在大型环境中操作繁琐,需要逐台机器访问或通过脚本化的 PowerShell 部署。

ADManager Plus 提供内置的 GPO 更新功能,只需点击即可将策略更新推送到任意组合的 DC,无需运行脚本或在单台机器上打开 GPMC。

在 ADManager Plus 中强制更新组策略的步骤

  1. 登录 ADManager Plus
  2. 导航至 Management > GPO Management > Force GPO Update
  3. Select Domain 下拉菜单中选择包含目标计算机的域。
  4. Force GPO Update 页面将显示所有与所选域关联的域计算机。
  5. 从列表中选择要更新的特定计算机。或者,使用 Import CSV 选项上传计算机列表。
  6. 点击 Apply 立即推送组策略更新。

ADManager Plus 会同时触发所有选定计算机的更新,绕过默认的 90 分钟刷新周期,无需脚本或从工作站直接连接到机器级别。

使用 ADManager Plus 即刻强制更新 GPO

排错技巧

  • 错误:用户策略更新失败

    原因: 最常见的原因是 DNS 解析失败、与 DC 的连接丢失、凭据过期或用户配置文件损坏。

    解决此错误的方法:

    • 确认计算机已加入域并连接到网络。
    • 运行 nslookup 以验证 DNS 是否正确解析 DC。
    • 在事件查看器中检查 Group Policy\Operational 日志以获取具体错误代码。如果出现事件 ID 1129,请确认客户端到 DC 的 LDAP 端口 389 是否可访问。
    • 运行 gpresult /r 检查应用了哪些策略以及是否有错误。
    • 错误:计算机策略无法更新
  • 错误:计算机策略无法更新

    原因: 通常是本地组策略文件夹中的 Registry.pol 文件损坏导致。

    解决此错误的方法:

    1. 导航至 C:\Windows\System32\GroupPolicy\Machine\
    2. 找到文件 Registry.pol
    3. 将其重命名为 Registry.pol.old
    4. 再次运行 gpupdate /force 。系统会自动生成新的 Registry.pol 文件。
    5. 重启计算机并验证策略是否正确应用。
  • 错误:gpupdate /force 卡住或耗时过长

    原因: 策略处理挂起,通常由于 DC 响应缓慢或不可达、大量 GPO,或 CSE 正在等待前台事件。

    解决此错误的方法:

    • 使用 /wait 参数可立即返回命令提示符,同时后台继续处理。
    • 使用 /logoff 或 /boot 参数检查是否静默要求注销或重启。
    • 检查事件查看器中的事件 ID 1058 或 1030 并执行相应修复。
    • 验证与 DC 的网络连接并确认 SYSVOL 可访问。
  • 错误:0x8007071a - 远程过程调用被取消

    原因: 当组策略处理在执行中断时发生此错误,最常见原因是组策略客户端服务超时、与 DC 的 RPC 连接断开,或客户端扩展(CSE)处理时卡顿。此错误常见于网络连接缓慢的机器或 DC 故障转移后。

    解决此错误的方法:

    1. 确保组策略客户端服务正在运行。
    2. 验证 TCP 端口 135 是否对 DC 开放。
    3. 在事件查看器中检查 GroupPolicy\Operational 日志的事件 ID 7016 或 7017,以识别卡顿的 CSE。

使用 gpupdate 的最佳实践

  • 先使用 gpupdate,再考虑使用 /force

    大多数情况下,标准更新足以使策略生效。仅在策略确实未生效时使用 /force 参数。

  • 避免同时在所有机器上运行 /force

    使用 GPMC 内置的组策略更新功能,该功能会添加随机延迟,或使用带 -RandomDelayInMinutes 参数的 Invoke-GPUpdate 来分散 DC 负载。

  • 始终使用 gpresult 进行验证

    在更新后运行 gpresult /r 可确认已应用的策略,并在出现下游问题之前显示任何拒绝或错误。

  • 当只有一方发生更改时,使用 /target

    如果您只修改了用户端设置,gpupdate /target:user 更快且避免了不必要的计算机端处理。

  • 记录刷新间隔的更改

    如果您修改了默认的 90 分钟周期,请在变更管理系统中记录,因为意外的间隔可能会使后续故障排除变得复杂。

  • 使用 ADManager Plus 进行全环境更新

    对多个计算机或域进行批量策略刷新时,ADManager Plus 的 Force GPO Update 功能提供了受控且可审计的方法,无需直接访问每台机器的 CLI。

ADManager Plus 如何简化 GPO 管理

在多个域、数百台计算机和多样化 OU 结构中大规模管理 Group Policy,很快会超出原生工具的舒适处理范围。ADManager Plus 是一款 GPO 管理报告 解决方案,替代了大多数日常任务中对 GPMC 和 PowerShell 脚本的需求。使用 ADManager Plus,您可以:

  • 强制 GPO 更新: 无需脚本,立即在选定计算机上应用策略更改。
  • 批量 GPO 管理 在多个节点上一次性创建、编辑、链接、启用、禁用和删除 GPO。
  • 复制 GPO 在林内跨域复制 GPO。
  • 合并 GPO: 将多个 GPO 合并为一个以减少复杂性。
  • 迁移 GPO: 将 GPO 从一个域移动到另一个域。
  • GPO 报告: 获取 GPO 状态、范围、最近修改的 GPO、未使用的 GPO、链接对象等的可见性。

常见问题解答

gpupdate /force 是一个 Windows 命令,强制重新应用计算机上的所有 Group Policy 设置,无论自上次更新以来策略是否有更改。它通常用于故障排除和立即应用紧急策略更改。

可以,您可以在没有管理员权限的情况下运行 gpupdate 来更新用户端策略。运行 gpupdate 不需要提升权限来配置用户设置,但计算机策略设置需要管理员权限。

使用 Invoke-GPUpdate PowerShell 命令和以下脚本:

Invoke-GPUpdate -Computer "PCName" -Force

但这需要启用 WinRM 并具有远程机器的管理员访问权限。

在运行 gpupdate 后立即运行 gpresult /r 以检查 Group Policy 是否已更新。此命令显示当前用户和计算机的已应用策略。要获得更详细的视图,可使用 gpresult /h C:\GPReport.html 导出 HTML 报告。

Group Policy 在客户端计算机上每 90 分钟刷新一次,带有 0-30 分钟的随机偏移,并在每次用户登录和计算机启动时刷新。

它增加了 DC 的负载,因为每个客户端请求并处理所有分配的 GPO,而不仅仅是更改过的。在大型环境中,同时在许多机器上运行 /force 可能导致显著的网络和 DC 负载。建议使用分阶段部署或 ADManager Plus 进行管理。

gpupdate /force 可能因以下原因不起作用:

  • 执行更新的机器未加入域。
  • DNS 无法解析 DC。
  • Registry.pol 文件损坏。
  • Group Policy Client 服务未运行,或 WMI 或安全筛选将机器排除在目标 GPO 之外。

使用 ADManager Plus 简化 GPO 管理的复杂性

Active Directory管理与报告的一站式解决方案
电子邮件下载链接 Email the ADManager Plus download link