gpupdate 是一个命令,用于手动刷新本地或域加入计算机上的组策略设置,立即应用新的或更改的配置,而不是等待默认的后台刷新周期。
组策略对象 (GPOs) 是一组控制 Active Directory (AD) 环境中用户和计算机行为的设置。默认情况下,Windows 每 90 分钟自动刷新组策略一次,带有最多 30 分钟的随机偏移,并且在每次用户登录或计算机重启时刷新,而域控制器 (DCs) 每五分钟刷新一次自己的策略。
但是,有时 IT 管理员需要立即应用更新的策略,而无需等待下一个刷新周期。在这种情况下,使用 gpupdate 命令及其 /force 开关来强制策略更新,为管理员提供按需触发刷新的一种方式。
以下是 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 |
|---|---|---|
| 更新内容 | 仅新策略和更改的策略 | 所有策略,无论是否修改 |
| 处理范围 | 增量处理,跳过未更改的设置 | 重新应用所有策略 |
| DC 负载 | 低 | 较高,因为传输的数据更多 |
| 速度 | 较快 | 较慢 |
| 使用场景 | 策略更改后的常规刷新 | 紧急策略部署、排查策略应用问题及恢复未经授权的本地更改 |
| 风险 | 最小;仅重新处理更改的策略,因此 DC 和网络负载较低 | 在大型环境中更为明显;每个分配的 GPO 都会为每个客户端重新处理,如果同时在多台机器上运行,可能会给 DC 造成压力并增加网络流量。 |
当您运行 gpupdate 时,会发生以下顺序:
gpupdate
gpupdate /force
gpupdate 也可以在没有管理员权限的情况下运行以刷新用户级别策略,但计算机策略设置需要提升权限。
若只刷新用户端组策略设置而不处理计算机策略,请使用 /target:user 参数。当您仅对 GPO 中的用户配置设置(如桌面限制、登录脚本或文件夹重定向)进行了更改,并希望更快刷新且不触发完整的计算机端策略周期时,此方法非常有用。
gpupdate /target:user
若只刷新计算机端组策略设置而不处理用户策略,请使用 /target:computer 参数。当您对计算机配置设置(如安全基线、启动脚本或软件部署)进行了更改,并希望应用这些更改而无需完整刷新时,此方法非常有用。
gpupdate /target:computer
gpupdate /force /logoff
gpupdate /force /wait:0
gpupdate /force /boot
gpupdate /sync
Invoke-GPUpdate 是一个 PowerShell 命令,允许您在一台或多台远程计算机上触发组策略刷新,而无需逐台登录。它通过调度远程任务在目标上运行 gpupdate /force 实现。
但此命令需要满足以下条件:
Invoke-GPUpdate -Computer
Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=corp,DC=local" | ForEach-Object { Invoke-GPUpdate -Computer $_.Name -Force -RandomDelayInMinutes 0 }
运行 gpupdate 后,您可以使用 gpresult 命令确认更新是否正确应用。
查看当前用户和计算机已应用策略的摘要:
gpresult /r
组策略管理控制台(GPMC)是一个 MMC 插件,可用于管理 GPO。它内部使用 gpupdate /force 触发 OU 内所有计算机的强制组策略更新,并应用最多 10 分钟的随机延迟,以分散 DC 的负载。
GPMC 方法针对所选 OU 及其嵌套的所有 OU 中的所有计算机,但无法针对单个计算机或默认的 Computers 容器。
结果窗口显示更新是否成功调度,但不显示策略是否成功应用。要验证实际的策略应用,请使用 gpresult 命令或检查事件查看器中的 GroupPolicy\Operational 日志。
虽然 gpupdate 命令和 GPMC 适用于小规模更新,但在大型环境中操作繁琐,需要逐台机器访问或通过脚本化的 PowerShell 部署。
ADManager Plus 提供内置的 GPO 更新功能,只需点击即可将策略更新推送到任意组合的 DC,无需运行脚本或在单台机器上打开 GPMC。
ADManager Plus 会同时触发所有选定计算机的更新,绕过默认的 90 分钟刷新周期,无需脚本或从工作站直接连接到机器级别。
原因: 最常见的原因是 DNS 解析失败、与 DC 的连接丢失、凭据过期或用户配置文件损坏。
解决此错误的方法:
原因: 通常是本地组策略文件夹中的 Registry.pol 文件损坏导致。
解决此错误的方法:
原因: 策略处理挂起,通常由于 DC 响应缓慢或不可达、大量 GPO,或 CSE 正在等待前台事件。
解决此错误的方法:
原因: 当组策略处理在执行中断时发生此错误,最常见原因是组策略客户端服务超时、与 DC 的 RPC 连接断开,或客户端扩展(CSE)处理时卡顿。此错误常见于网络连接缓慢的机器或 DC 故障转移后。
解决此错误的方法:
大多数情况下,标准更新足以使策略生效。仅在策略确实未生效时使用 /force 参数。
使用 GPMC 内置的组策略更新功能,该功能会添加随机延迟,或使用带 -RandomDelayInMinutes 参数的 Invoke-GPUpdate 来分散 DC 负载。
在更新后运行 gpresult /r 可确认已应用的策略,并在出现下游问题之前显示任何拒绝或错误。
如果您只修改了用户端设置,gpupdate /target:user 更快且避免了不必要的计算机端处理。
如果您修改了默认的 90 分钟周期,请在变更管理系统中记录,因为意外的间隔可能会使后续故障排除变得复杂。
对多个计算机或域进行批量策略刷新时,ADManager Plus 的 Force GPO Update 功能提供了受控且可审计的方法,无需直接访问每台机器的 CLI。
在多个域、数百台计算机和多样化 OU 结构中大规模管理 Group Policy,很快会超出原生工具的舒适处理范围。ADManager Plus 是一款 GPO 管理 和 报告 解决方案,替代了大多数日常任务中对 GPMC 和 PowerShell 脚本的需求。使用 ADManager Plus,您可以:
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 可能因以下原因不起作用: