如何强制更新组策略

最后更新于:

什么是 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