gpresult 命令是 Windows 内置的诊断工具,用于显示结果集策略(RSoP),即当前应用于特定用户或计算机的实际组策略设置。系统管理员常用它来验证 Group Policy Objects (GPOs) 是否正确应用,排查策略冲突,审计安全设置,并确认域内计算机的策略合规性。
gpresult 命令显示 RSoP 报告,即上次处理组策略时应用于用户或计算机的所有组策略设置的快照。它显示了哪些 GPO 被应用,哪些被过滤或拒绝,以及解决冲突的优先级顺序。
RSoP 有两种模式:
以下是 gpresult 命令的语法:
gpresult [/s <Computer>] [/u <Domain\User>] [/p <Password>]
| 参数 | 描述 |
|---|---|
| /r | 显示 RSoP 数据摘要,包括已应用的 GPO 名称、OU 路径、域信息和组成员身份。这是日常策略验证中最常用的标志。 |
| /v | 除了 /r 参数显示的信息外,还添加注册表项路径、登录脚本文件名、上次脚本执行时间及更多策略设置细节,有助于追踪设置来源。 |
| /z | 显示 /v 参数显示的所有内容,以及所有配置了该设置的 GPO,包括优先级较低的已应用 GPO 和被拒绝的 GPO。 |
| /h <filename> | 将 RSoP 报告导出为 HTML 文件。filename 参数指定输出路径,若未指定路径,文件将保存到当前工作目录。 |
| /x <filename> | 将 RSoP 报告导出为 XML 文件,便于程序化解析策略数据或将结果存储到 SQL 数据库。 |
| /f | 强制 gpresult 覆盖已存在的输出文件。若无 /f 参数,指定文件名已存在时命令将返回错误。 |
| /s <computer> | 指定要查询的远程计算机名称或 IP 地址。 |
| /u <Domain\User> | 使用指定用户帐户的凭据运行命令。与 /s 参数配合使用,在当前会话无访问权限时用于远程身份验证。 |
| /p <Password> | 这是 /u 用户帐户的密码。如果指定了 /u 参数但省略了 /p 参数,gpresult 会交互式提示输入密码。 |
| /user <TargetUser> | 指定要验证其 RSoP 数据的域用户。这对于针对当前登录帐户以外的用户查询策略非常有用。 |
| /scope {user | computer} | 将输出限制为用户范围或计算机范围的策略设置。 |
运行 gpresult 命令的方法:
gpresult /r
/scope computer 参数过滤输出,仅显示 Computer Configuration 下的策略,例如密码策略、软件部署和无论谁登录都适用的安全设置。与 /scope user 不同,它始终需要以提升权限的命令提示符运行。输出包括计算机的操作系统配置和 AD 站点,是否在上次刷新时检测到慢速链接,上次成功计算机策略刷新的时间戳和域控制器 (DC),按优先顺序应用的 GPO 以及任何被筛选的 GPO。
选择正确的参数很重要,因为每个参数返回的详细程度不同。以下是每个标志的功能及使用时机:
gpresult /r 是大多数策略验证任务的标准起点。以管理员身份运行时,它返回两个部分:
gpresult /v 在 /r 参数的基础上增加了大量额外细节。除了 /r 返回的内容外,/v 还包括:
当多个 GPO 配置相同设置时,Windows 按 LSDOU 顺序应用,每一级覆盖前一级。因此,链接到子 OU 的 GPO 优先于域级别的冲突设置。同一容器内,链接顺序决定优先级。
gpresult /r 显示了哪些 GPO 被应用,但不显示哪个 GPO 强制执行了特定设置。要了解优先级,可以使用 /z 参数。它返回 /v 显示的所有内容,以及:
/h 参数将 RSoP 报告保存为 HTML 文件,可在任何浏览器中打开。它生成格式良好且带颜色编码的报告,比控制台输出更易阅读,尤其适合存档合规记录。使用以下命令导出:
gpresult /h gpreport.html
要将文件保存到特定路径,请使用以下命令:
gpresult /h C:\Reports\gposopreport.html
如果文件已存在且想要覆盖,请添加 /f 标志:
gpresult /h C:\Reports\gprsopreport.html /f
要打开报告,请在文件资源管理器中导航到保存路径并双击文件,或直接从命令行打开:
start C:\Reports\gprsopreport.html
/x 参数生成相同 RSoP 数据的 XML 版本。当您想以编程方式解析策略结果时,这非常有用。
gpresult /x C:\Reports\gprsopreport.xml
对于简单的文本输出,使用 > 操作符将控制台输出重定向到文件。此方法适用于任何 gpresult 标志:
gpresult /v > C:\Reports\policy.txt
> 运算符会在文件不存在时创建该文件,若文件已存在则覆盖它。使用 >> 可追加到现有文件,而不是覆盖。
gpresult /r /scope user
gpresult /r /scope computer
gpresult /r /user DOMAIN\john
gpresult /s PC-234 /r
gpresult 输出可能达到数百行。通过管道传递给 findstr 可以让您准确定位所需内容,而无需滚动查看完整结果。
gpresult /r | findstr /i "denied" # show only filtered or denied GPOs
如果您想验证刚刚做出的策略更改效果,请先强制刷新,以便 gpresult 反映最新状态,而非之前的周期。
gpupdate /force && gpresult /r
RSoP 是一个组策略框架,用于计算并记录在评估所有继承、优先级、筛选和强制规则后,应用于用户或计算机的最终策略设置集。每次在 Windows 机器上处理组策略时,RSoP 提供程序都会将结果记录到 WMI 中。gpresult 命令查询该 WMI 日志并以可读格式呈现数据。
Windows PowerShell 包含 Get-GPResultantSetOfPolicy cmdlet,它生成与 gpresult /h 或 gpresult /x 相同的 RSoP 数据,但在 PowerShell 中。它在自动化和脚本环境中特别有用。
使用 PowerShell 生成 RSoP 报告:
Get-GPResultantSetOfPolicy -ReportType HTML -Path C:\Reports\RSoP.html
以下是 gpresult 命令的一些关键用例:
Group Policy Management Console (GPMC) 包含内置的组策略结果向导,可生成与 gpresult 相同的 RSoP 数据,但以图形化 HTML 报告形式呈现,Settings 选项卡显示每个单独策略设置的最终 GPO,Policy Events 选项卡列出所有相关事件日志条目。
生成报告的方法:
rsop.msc 是内置的 MMC 插件,以图形树视图显示已应用的组策略设置,类似于 Local Group Policy Editor。这是快速获取应用策略视觉概览的最快方式,无需生成报告文件或使用命令行。
但 rsop.msc 不显示所有 Microsoft 组策略设置,只显示通过支持 RSoP 日志的客户端扩展应用的设置。要获得完整视图,请使用 gpresult /h 或组策略结果向导。
查看 RSoP 的方法:
若要查看不同用户或计算机的组策略结果,请改用独立向导:
以下是在 ADManager Plus 中生成此报告的方法:
原因:当未以管理员权限运行 gpresult 命令时,会出现此错误。没有管理员权限,Windows 限制 RSoP 查询仅限于用户范围的策略数据,并阻止访问计算机范围的设置。当保存 HTML 报告到会话无写权限的路径,或远程查询使用的账户不是目标机器的本地管理员时,也会发生此错误。
解决此错误的方法:
gpresult /h C:\Users\Personal\gpreport.html.
原因:从非提升权限的命令提示符运行 gpresult 只返回用户范围的设置,Windows 不向标准会话暴露计算机范围的 RSoP。另一个原因是使用与登录用户不同的管理员账户运行命令;此时,gpresult 查询的是提升账户的上下文,而非标准用户,因而返回该消息。
解决此错误的方法:
gpresult /r /user DOMAIN\john
原因:该 GPO 可能未链接到正确的 OU,被安全筛选或 WMI 筛选排除,链接被禁用,或被继承阻止。
解决此错误的方法:
虽然 gpresult 命令对单台机器有效,但在大规模环境中存在限制。它一次查询一台计算机;不提供历史数据;且无法创建、链接或迁移 GPO。ADManager Plus 通过其 GPO 管理和报告功能解决了这些问题,无需 PowerShell 或命令行访问。
以下是在 ADManager Plus 中管理和报告 GPO 的方法:
rsop.msc 是一个 MMC 插件,提供与 gpresult 在命令行中显示的策略数据相同的图形视图。它可在所有加入域的 Windows 机器上通过按 Win + R 并输入 rsop.msc 访问。但它无法查询远程机器,也不支持脚本。对于故障排除和自动化,gpresult 是更强大的工具。
默认情况下,gpresult /h 会将 HTML 报告保存到运行命令时命令提示符或 PowerShell 所打开的目录。要在运行前确认此目录,请输入 echo %cd%。若要保存到特定位置,请提供完整路径:
gpresult /h C:\Reports\gpreport.html
gpresult /r 返回一个摘要,显示已应用的 GPO,包括 GPO 名称、OU 路径和组成员资格,足以确认策略是否已应用。gpresult /v 额外显示每个策略设置的注册表项路径、登录脚本文件名和上次脚本执行时间,有助于了解特定设置的来源。
管理员最常用 gpresult 来:
gpresult 显示上一次组策略处理周期的结果及应用的策略。gpupdate 强制 Windows 立即从 DC 重新应用组策略。gpresult 有助于诊断已应用的组策略,而 gpupdate /force 则用于在不等待下一个自动刷新间隔的情况下将新策略推送到计算机。
gpresult 命令适用于所有主要 Windows 版本,从 Windows XP 开始。它是 Windows 10、Windows 11 以及 2003 至 2025 年所有 Windows Server 版本的内置工具,无需额外安装。
在 ARM64 Windows 11 设备上,默认的 gpresult.exe 不支持 /h 参数。可以使用 C:\Windows\SysWow64\gpresult.exe /h report.html 替代。
使用 /user 参数后跟目标用户名,以其他用户身份运行 gpresult。确保该用户至少登录过一次机器,以便存在 RSoP 数据。使用以下命令:
gpresult /r /user DOMAIN\john
若要查询远程机器上的不同用户,请结合使用 /s 和 /user 参数:
gpresult /s CORP-PC-01 /user DOMAIN\johndoe /r
在未提升权限的情况下运行 gpresult /r 会返回当前用户的用户范围策略设置,无需特殊权限。查询计算机范围设置(使用 /scope computer 或完整 /r 输出)则需要提升权限的命令提示符。
您需要远程计算机上的本地管理员权限,或在包含目标计算机的域或 OU 上拥有远程访问 Group Policy Results data 的权限。