理解 GPUpdate 命令 [深入]

组策略是许多组织今天使用的流行Active Directory服务。如果您的组织使用组策略,那么您很可能熟悉gpupdate命令,更具体地说是gpupdate /force命令。

您知道gpupdate在做什么吗?您是否需要使用force参数?如果是的话,什么情况下使用是有意义的?

在本文中,您将了解gpupdate的作用、工作原理以及如何最好地利用其选项。

什么是GPUpdate?

Gpupdate是微软提供的命令行实用程序,随Windows操作系统的所有版本一起提供。它是一个控制在分配的Active Directory计算机上应用组策略对象(GPOs)的实用程序。

通常,当管理员将GPO分配给计算机或用户时,该计算机会自动与域控制器检查,并应用在GPO中定义的设置。无需干预;这个过程是自动的。

在常规自动计划之外的时候,管理员需要强制计算机检查新的或更改的GPO时,就会用到gpupdate。

gpupdate命令简而言之,会与域控制器检查是否有针对计算机分配的新的或更新的GPO,并立即尝试应用它们。

先决条件

如果您想运行本教程提供的任何示例,则本文的先决条件很简单。

  • A Windows computer joined to an Active Directory domain
  • 至少有一个分配给您所在计算机的GPO

Gpupdate的工作原理

当您坐在域加入的计算机前时,打开Windows命令提示符或PowerShell并运行gpupdate,一系列任务将开始。

Gpupdate in action
  1. Gpupdate启动组策略客户端服务。此服务负责发现并应用新的组策略设置。

2. 然后,组策略客户端服务会联系计算机的登录DC,并检查是否有新的GPO或现有GPO的更新可用。

3. 如果组策略客户端服务发现任何新的GPO,或者您使用gpedit.msc在本地更改了任何GPO,则该过程会处理所有客户端端扩展(CSEs),先处理计算机设置,然后处理用户设置。

组策略客户端服务会在应用程序和服务日志\Microsoft\Windows\GroupPolicy\Operational下记录事件。

Gpupdate applies computer settings before the user settings.

相关:组策略的工作原理(详细介绍)

4. 完成后,组策略客户端服务将等待直到下一次刷新间隔,默认为90分钟加上最多30分钟的随机偏移。

一些组策略设置需要用户注销或重新启动计算机才能生效。如果其中之一是策略的一部分,gpupdate 将要求注销或重新启动计算机。

臭名昭著的/force开关解释

现在你知道运行gpupdate时发生了什么基本情况。到目前为止,一切似乎都很正常,对吧?在典型情况下,运行gpupdate并允许其完成过程是完全可以的。但也有一些情况下,你需要强制执行一些操作。

gpupdate中最广泛使用的参数之一是/force开关。这个开关在每个IT专业人员的脑海中都被认为是必需的开关,与流行的观念相反,在某些情况下实际上是不需要的。

默认情况下,gpupdate是智能的;它会将所有当前设置与任何新设置进行比较,并应用它们。但是,你也可以使用/force开关强制gpupdate重新应用全部设置。为什么需要这样做呢?

有时,设置会偏离其预期值。例如,如果用户禁用了由现有策略控制的 Windows 功能,运行gpupdate /force将强制组策略客户端服务重新评估该值并将其返回到预期值。或者,也许,您想将用户重新添加到一个被移除的受限组中。

组策略客户端服务定期重新应用一些设置,例如安全设置(默认间隔为 16 小时)。

使用/force开关的最大原因是当处理只能在登录或启动时应用的设置时。当发生这种情况时,即使新的设置不需要这样的操作,Windows 也会提示您每次运行gpupdate /force时注销或重新启动。

深入了解 Gpupdate 的参数

现在您已经基本了解了 gupdate 的工作原理,并且知道何时以及如何使用/force开关,让我们现在关注 gpupdate 提供的所有其他功能。

获取帮助

正如预期的那样,gpupdate 命令可以提供有关每个参数及其功能的信息。虽然缺乏深度,但/?在您需要快速了解如何执行特定任务时很方便。

Gpupdate /? displays all the switches and options available with the command.

定位计算机或用户设置

默认情况下,gpupdate 告诉组策略客户端服务同时处理计算机和用户设置。如果您只需要刷新其中一个设置集,可以使用/target参数。

您在使用 /target 参数时有两个选项;您可以使用 /target:computer/target:user 来定位计算机或用户设置。

您应该只在特定情况下使用 /target 参数,特别是首先定位用户设置,然后是计算机设置。为什么呢?有时策略会有重叠的用户和计算机设置。当发生这种情况时,用户设置会覆盖计算机设置,可能会导致意外行为。

创建超时

Gpupdate 通常运行得很快,但是如果出现不响应的 DC 或组策略客户端服务的问题,可能会中断该进程。如果您在运行 gpupdate 的脚本中需要在运行 gpupdate 后执行进一步任务,则可能需要创建超时。

您可以使用 /wait 参数强制 gpupdate 在一定时间后返回控制权给命令窗口,并将策略处理推送到后台。下面是 /wait 参数的可用值。

Wait Value Result
0 Immediately returns control to console
-1 Waits indefinitely for gpupdate to finish
1+ Waits the number of seconds provided
600 Default value

强制自动注销

某些设置将要求用户在无法进行后台处理时注销并重新登录。默认情况下,如果情况如此,gpupdate 完成后会提示您。但是,如果您希望一旦 gpupdate 完成就立即注销,可以使用 /logoff 开关。

/logoff 开关可能并不总是有效

在 Windows 10 和 Windows Server 2019 上进行测试,有时会遇到未知问题,/logoff 参数将无效。

例如,下面的客户端已分配一个策略,以启用桌面重定向以供登录用户使用。 文件夹重定向设置只能在登录时处理,而不能在策略的后台刷新期间处理。

如果不使用/logoff开关,常规用户会看到下面的警告,提示需要注销以应用新的设置,这是预期的。 但无论是否使用/logoff开关,您仍会收到提示,Windows都不会注销。

Warning to log off after gpupdate

为了确保在此场景中注销,您还必须使用/force开关。

强制自动重启

/logoff开关类似,/boot开关在Windows无法在后台处理任何计算机设置时自动重新启动计算机。 /boot开关通常用于针对计算机的软件安装。

强制同步处理

组策略客户端服务可以并行(异步)或逐个(同步)应用策略。 Windows仅在用户登录和计算机启动时同步处理策略,否则异步处理。

在同步处理期间,组策略客户端调用其所有CSE,即使没有设置更改也是如此。 同步处理是必要的,因为某些设置依赖于其他设置。

您可以将/sync开关与/target: user/target:computer结合使用。只能在以管理员身份运行命令窗口时使用/sync开关。否则,您将看到下面的访问被拒绝错误消息。

Running gpupdate /sync as a normal user is not allowed.
Running gpupdate /sync as administrator prompts for a restart.

相关:如何以管理员身份运行 PowerShell

异步处理是优化域用户登录体验的一种方式。在Windows XP之前,所有策略处理都是同步的,唯一的缺点是一些设置需要两次登录或两次重启才能生效。自Windows XP以来,默认模式现在是异步的。

结论

如果您跟着本文,现在应该清楚gpupdate的作用以及如何使用其开关来更改其行为。如果您有兴趣在更大范围内使用gpupdate或者与其自动化,请务必检查其PowerShell对应项, Invoke-GPUpdate

Source:
https://adamtheautomator.com/gpupdate/