您是否曾经将一个组策略对象(GPO)应用到活动目录组织单位(OU)并希望验证其是否已应用?如果是的话,您需要了解gpresult命令。
扫描您的AD,查找超过930万个已受损密码。下载Specops Password Auditor,这是一个免费的只读工具,用于识别与密码相关的漏洞。
在本教程中,您将学习如何使用gpresult命令验证本地和远程Windows计算机上的组策略设置。
让我们开始吧!
先决条件
如果您想跟着本教程的示例操作,请确保您具备以下条件:
- 一个活动目录域。任何版本均可。本教程将使用一个名为HomeLab.Local的域。
- A domain-joined Windows PC with at least one GPO applied to it. If you’d like to learn how to invoke
gpresult
remotely, you’ll need a second domain-joined PC. This tutorial will use two Windows 10 computers called Win10VM1 and Win10VM2. - 您的本地计算机和远程计算机上的本地管理员权限。
了解GPResult命令
GPResult是Windows内置的命令行工具,用于生成关于应用到域加入计算机的用户和计算机策略的报告。
当活动目录管理员将GPO分配给OU时,该OU中的计算机或用户会检查以应用这些设置。目标计算机接收GPO的时候就是gpresult发挥作用的时候。
每台计算机实际接收和应用这些设置的时间取决于组策略刷新间隔。
gpresult
实用程序允许您在这些目标计算机上运行命令,以确认应用的 GPO 是否符合您的预期。
获取 GPResult 的帮助
像许多其他命令行实用程序一样,gpresult
具有一个简单的内置帮助系统。该帮助系统可让您轻松查找所有难以记住的开关。
您可以通过简单地运行不带开关的 gpresult
来找到所有 gpresult
提供的开关,如下所示。与其在想知道参数的含义时再回到本帖,不如记住内置帮助存在!

检索结果集的策略(RSOP)数据
不带参数运行 gpresult
仅会显示帮助信息。您需要它来检索一些信息!首先,让我们先了解一下 /r
开关或结果集的策略的工作原理。
策略集结果(RSOP)是一个组策略附加组件,允许您查询各种组策略方面。RSOP是发现分配给计算机的策略的结果的绝佳方式。
GPResult
以日志模式显示RSOP数据,其中包括用户和计算机OU路径、域名、AD组成员资格、安全设置以及用户和计算机的应用GPO。
要使用gpresult
查询RSOP数据,请打开cmd.exe或PowerShell,并以管理员身份运行。使用下面所示的/r
开关调用gpresult
。
如下所示,您可以看到gpresult
返回的内容包括特定计算机的所有GPO(计算机设置)和针对将登录到计算机的所有用户的GPO(用户设置)等。
您可以在非管理员命令提示符上运行
gpresult /R
,但它只会显示应用于运行命令的用户的策略。

获取详细应用组策略信息:找到精细的应用组策略信息
如果你只是需要发现应用于特定计算机或用户(在该计算机上)的GPO,那么你从/r
开关获得的RSOP数据就够了。但RSOP数据只能做到这么多。RSOP数据不提供诸如登录脚本最后执行时间、GPO创建位置的注册表键等信息。
要获取尽可能多的信息,可以使用如下所示的/v
或verbose(详细)开关。
看看/v
提供的所有信息。这是很多信息啊!







以下是/r
和/v
之间的差异。你会发现/r
只提供GPO名称,而/v
则提供登录脚本文件名以及脚本在计算机上上次执行的时间。

将GPresult限制为用户或基于计算机的设置
如前所述,默认情况下,gpresult
返回用户和基于计算机的设置。有时,特别是在管理具有数百个设置的GPO时,输出量可能会令人不堪重负。
如果你只需要查找应用于计算机或用户的设置,gpresult
允许你使用/scope
参数限制查询的范围。通过将/scope
参数参数指定为computer
或user
,gpresult
将只返回应用于所有用户或计算机的设置。
要查看在computer
范围内所有策略的RSOP数据,请运行以下命令。
如何仅以详细模式查找所有用户的所有策略?
可以使用
/scope
参数,除其他开关外,如/r
和/v
,以限制任一命令的范围。
如果您以管理员身份运行cmd.exe或PowerShell并调用GPResult,则会返回所有用户的组策略设置。如果使用/scope user
开关,则会删除基于计算机的设置,但仍会返回所有用户的设置。
如果需要将设置限制为同时登录的单个用户,请使用/user
参数,后跟所需用户名作为参数。
如果尝试查询不存在的用户的RSOP数据,GPResult将返回消息
用户"<user>"没有RSOP数据
。
导出GPresult输出
有时仅返回信息到命令行控制台是不够的。也许您需要构建报告或与其他人分享结果。在这种情况下,您需要将结果导出到其他格式。
您可以以几种不同的方式导出GPResult输出。
将结果导出为文本文件
以下是将结果导出到文件的一种简便方法,即使用命令提示符或PowerShell的输出重定向功能。通过使用重定向操作符>
后跟文本文件名将命令行结果“管道化”到文件中,文本将包含与控制台中看到的内容完全相同。
以下命令将返回所有RSOP数据并创建一个名为C:\Temp\RsopReport.txt的文件,其中包含GPResult命令的全部结果。
将结果导出到HTML或XML文件
与从命令提示符到文本文件的本机重定向不同,您还可以将应用的策略信息生成并保存到HTML或XML文件中。使用/H
开关(用于HTML)或/X
开关(用于XML)后跟请求的HTML文件的路径,GPResult将创建一个格式良好的HTML文件与输出。
如果文件已经存在,GPResult将返回错误。通过使用
/F
开关,强制GPResult覆盖现有文件。
远程运行GPResult
在整个教程中,您一直在本地运行GPResult。使用/s
参数,GPResult也可以远程运行检索所有相同的组策略设置。
例如,要查找已经登录至远程计算机 win10vm1 的用户 user01 的 RSOP 数据,您可以运行以下命令:

也许您登录的计算机没有权限查询远程计算机上的组策略信息。在这种情况下,除非您指定备用凭据,否则 GPResult 将失败。
通过使用如下所示的 /U
(用户名)和 /P
(密码)参数指定备用凭据。

您的 Active Directory 中是否存在被 compromise 的密码?下载 Specops Password Auditor 并免费 扫描密码漏洞!
结论
您现在应该知道如何使用 GPResult 命令查询本地和远程计算机上应用的组策略设置。这个方便的命令是任何 Active Directory 管理员发现和故障排除工具中的利器。
下一次当您想知道,“我如何确认加入域的计算机已经应用了我期望的 GPO?”时,您会使用什么工具呢?