如何使用 gpresult 查看组策略结果

最后更新于:

gpresult 命令是 Windows 内置的诊断工具,用于显示结果集策略(RSoP),即当前应用于特定用户或计算机的实际组策略设置。系统管理员常用它来验证 Group Policy Objects (GPOs) 是否正确应用,排查策略冲突,审计安全设置,并确认域内计算机的策略合规性。

  • gpresult
  • GPMC
  • rsop.msc
  • ADManager Plus
  • 排错技巧
  • 为什么选择 ADManager Plus?
  • 常见问题解答
 

什么是 gpresult 命令?

gpresult 命令显示 RSoP 报告,即上次处理组策略时应用于用户或计算机的所有组策略设置的快照。它显示了哪些 GPO 被应用,哪些被过滤或拒绝,以及解决冲突的优先级顺序。

RSoP 有两种模式:

  • 日志模式: 报告上次组策略在计算机上运行时实际应用的策略设置。
  • 规划模式: 模拟在假设条件下(如不同的 OU、不同的安全组成员身份或不同站点)用户或计算机会应用哪些策略。此模式通过 GPMC 的组策略建模向导提供,gpresult 不支持此模式。

gpresult 语法和参数

以下是 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 命令的方法:

  1. 以管理员身份打开 命令提示符。
  2. 输入带有所需参数的 gpresult 命令,然后按 Enter。
  3. Review the output, or open the exported HTML or XML report in a browser.
    gpresult /r
gpresult /r 在 DC 上显示已应用的 GPO 和安全组的输出

使用 gpresult /scope computer

/scope computer 参数过滤输出,仅显示 Computer Configuration 下的策略,例如密码策略、软件部署和无论谁登录都适用的安全设置。与 /scope user 不同,它始终需要以提升权限的命令提示符运行。输出包括计算机的操作系统配置和 AD 站点,是否在上次刷新时检测到慢速链接,上次成功计算机策略刷新的时间戳和域控制器 (DC),按优先顺序应用的 GPO 以及任何被筛选的 GPO。

gpresult /r /scope computer 在 DC 上显示仅计算机 GPO 结果的输出

理解 gpresult 输出:/r 与 /v 与 /z

选择正确的参数很重要,因为每个参数返回的详细程度不同。以下是每个标志的功能及使用时机:

gpresult /r 用于 RSoP 摘要

gpresult /r 是大多数策略验证任务的标准起点。以管理员身份运行时,它返回两个部分:

  • Computer Configuration: 显示计算机的 OU 路径、域名、上次组策略处理时间以及应用的 GPO 列表。
  • User Configuration: 显示用户的 OU 路径、安全组成员身份以及 User Configuration 下应用的 GPO 列表。被安全筛选或 WMI 筛选排除的 GPO 会显示在单独的 Denied GPOs 部分。

gpresult /v 用于详细模式

gpresult /v 在 /r 参数的基础上增加了大量额外细节。除了 /r 返回的内容外,/v 还包括:

  • 每个策略设置存储的注册表键路径(例如,HKLM\Software\Policies\...)
  • 登录和注销脚本文件名及每个脚本的最后执行时间
  • 文件夹重定向设置及目标路径
  • 软件安装策略详情
  • 其他管理模板设置及其配置值

gpresult /z 用于超级详细模式

当多个 GPO 配置相同设置时,Windows 按 LSDOU 顺序应用,每一级覆盖前一级。因此,链接到子 OU 的 GPO 优先于域级别的冲突设置。同一容器内,链接顺序决定优先级。

gpresult /r 显示了哪些 GPO 被应用,但不显示哪个 GPO 强制执行了特定设置。要了解优先级,可以使用 /z 参数。它返回 /v 显示的所有内容,以及:

  • 配置特定设置的所有 GPO,包括被更高优先级 GPO 覆盖的那些
  • 每个冲突策略设置的优先级值,准确显示哪个 GPO 获胜及原因

将 gpresult 输出导出为 HTML、XML 和文本文件

使用 gpresult /h 导出为 HTML

/h 参数将 RSoP 报告保存为 HTML 文件,可在任何浏览器中打开。它生成格式良好且带颜色编码的报告,比控制台输出更易阅读,尤其适合存档合规记录。使用以下命令导出:

gpresult /h gpreport.html

gpresult /h 将文件保存在哪里?

要将文件保存到特定路径,请使用以下命令:

gpresult /h C:\Reports\gposopreport.html

如果文件已存在且想要覆盖,请添加 /f 标志:

gpresult /h C:\Reports\gprsopreport.html /f

要打开报告,请在文件资源管理器中导航到保存路径并双击文件,或直接从命令行打开:

start C:\Reports\gprsopreport.html
gpresult /h 生成显示组策略结果摘要的 HTML 报告

使用 gpresult /x 导出为 XML

/x 参数生成相同 RSoP 数据的 XML 版本。当您想以编程方式解析策略结果时,这非常有用。

gpresult /x C:\Reports\gprsopreport.xml
gpresult /x 生成显示原始 RSOP 数据结构的 XML 报告

导出为文本文件

对于简单的文本输出,使用 > 操作符将控制台输出重定向到文件。此方法适用于任何 gpresult 标志:

gpresult /v > C:\Reports\policy.txt

> 运算符会在文件不存在时创建该文件,若文件已存在则覆盖它。使用 >> 可追加到现有文件,而不是覆盖。

gpresult /v 输出重定向到文本文件,显示详细的 RSOP 数据

示例脚本和用例

示例 1:仅检查用户策略设置

gpresult /r /scope user

示例 2:仅检查计算机策略设置

gpresult /r /scope computer

示例 3:验证 GPO 是否应用于特定用户

gpresult /r /user DOMAIN\john

示例 4:在远程计算机上运行 gpresult

gpresult /s PC-234 /r

示例 5:使用 findstr 过滤输出

gpresult 输出可能达到数百行。通过管道传递给 findstr 可以让您准确定位所需内容,而无需滚动查看完整结果。

gpresult /r | findstr /i "denied" # show only filtered or denied GPOs

示例 6:在运行 gpresult 前刷新策略

如果您想验证刚刚做出的策略更改效果,请先强制刷新,以便 gpresult 反映最新状态,而非之前的周期。

gpupdate /force && gpresult /r

gpresult、RSoP 和 Get-GPResultantSetOfPolicy 之间的区别

什么是 RSoP?

RSoP 是一个组策略框架,用于计算并记录在评估所有继承、优先级、筛选和强制规则后,应用于用户或计算机的最终策略设置集。每次在 Windows 机器上处理组策略时,RSoP 提供程序都会将结果记录到 WMI 中。gpresult 命令查询该 WMI 日志并以可读格式呈现数据。

Get-GPResultantSetOfPolicy

Windows PowerShell 包含 Get-GPResultantSetOfPolicy cmdlet,它生成与 gpresult /h 或 gpresult /x 相同的 RSoP 数据,但在 PowerShell 中。它在自动化和脚本环境中特别有用。

使用 PowerShell 生成 RSoP 报告:

Get-GPResultantSetOfPolicy -ReportType HTML -Path C:\Reports\RSoP.html
Get-GPResultantSetOfPolicy cmdlet 在 PowerShell 中生成带有 LoggingMode 输出的 HTML 报告

gpresult 命令的关键用例

以下是 gpresult 命令的一些关键用例:

  • 验证新部署的 GPO: 将新 GPO 链接到 OU 后,gpresult /r 可确认策略是否已到达目标计算机并显示在 Applied GPOs 列表中。
  • 排查未生效的设置: 当 GPO 中配置的策略设置未在计算机上生效时,gpresult /z 会显示涉及该设置的所有 GPO 及其应用情况。
  • 诊断未接收软件部署或登录脚本的用户: /r 参数显示上次登录时应用的用户范围 GPO,包括软件安装或登录脚本策略是否存在、被筛选或完全缺失。/v 标志会添加脚本文件名及其上次执行时间。
  • 在安全审查前进行合规性审计: 生成包含某一时点机器上所有生效策略设置的 HTML 报告,有助于证明密码策略、账户锁定设置和安全基线正在被积极执行。

如何使用 GPMC 生成组策略结果报告

Group Policy Management Console (GPMC) 包含内置的组策略结果向导,可生成与 gpresult 相同的 RSoP 数据,但以图形化 HTML 报告形式呈现,Settings 选项卡显示每个单独策略设置的最终 GPO,Policy Events 选项卡列出所有相关事件日志条目。

生成报告的方法:

  1. 按 Win + R,输入 gpmc.msc,然后按 Enter。
  2. 在左侧控制台树中,展开您的林和域,右键单击 Group Policy Results,选择 Group Policy Results Wizard。
  3. 在欢迎界面点击 Next。
  4. On the 计算机选择 screen:
    • 选择 This computer 以在本地运行报告。
    • 选择 Another computer,输入计算机名称或点击 Browse 查找,然后点击 Next。
  5. On the 用户选择 screen:
    • 选择 Current user 以报告当前登录用户。
    • 选择 Select a specific user,从之前登录过该计算机的用户列表中选择。
    • 选择 Do not display user policy settings 以生成计算机特定报告。
    • 点击 Next。
  6. 查看 Summary of Selections 屏幕,点击 Next 运行查询。GPMC 连接目标计算机,通过 WMI 检索 RSoP 数据并生成报告。
  7. 点击 Finish。
GPMC 中的组策略结果向导显示用户和计算机策略设置的选择摘要

如何使用 rsop.msc 查看组策略结果

rsop.msc 是内置的 MMC 插件,以图形树视图显示已应用的组策略设置,类似于 Local Group Policy Editor。这是快速获取应用策略视觉概览的最快方式,无需生成报告文件或使用命令行。

但 rsop.msc 不显示所有 Microsoft 组策略设置,只显示通过支持 RSoP 日志的客户端扩展应用的设置。要获得完整视图,请使用 gpresult /h 或组策略结果向导。

查看 RSoP 的方法:

  1. 按 Win + R,输入 rsop.msc,然后按 Enter。
  2. 如果 UAC 提示,请点击 Yes。
  3. RSoP 管理单元打开并自动扫描当前用户和计算机策略。
  4. 左侧窗格显示与组策略编辑器相同的树状结构。
  5. 展开任意节点以浏览已应用的设置。
  6. 若要查看哪个 GPO 应用了特定设置,右键点击该设置并选择 Properties。优先级选项卡列出配置该设置的所有 GPO,按优先级排序,获胜的 GPO 位于顶部。
RSoP MMC 插件显示组策略的计算机配置

若要查看不同用户或计算机的组策略结果,请改用独立向导:

  1. 按下 Win + R,输入 mmc,然后按 Enter。
  2. 转到 File > Add/Remove Snap-in。
  3. 从列表中选择 Resultant Set of Policy,点击 Add,然后点击 OK。
  4. 在左侧窗格中,右键点击 Resultant Set of Policy 并选择 Generate RSoP Data。
  5. 在 RSoP Wizard 中,选择 Logging mode 并点击 Next。
  6. 选择 Another computer 并输入计算机名称,或选择 This computer 并点击 Next。
  7. 从已登录用户列表中选择 Current user 或 Select a specific user,然后点击 Next。
  8. 查看摘要,点击 Next 生成报告,然后点击 Finish。

如何在 ADManager Plus 中生成 Resultant Set of Policy 报告

以下是在 ADManager Plus 中生成此报告的方法:

  1. 登录 ADManager Plus 并导航至 Reports 选项卡。
  2. 在左侧窗格中,点击 GPO Reports > GPO Settings Reports > Resultant Set of Policy。
  3. 选择所需的域,然后选择要查看其组策略设置的计算机或用户。
  4. 根据所选对象,勾选 Display Computer Settings 和/或 Display User Settings。
  5. 点击 Generate。将显示所有已应用策略的列表。

排错技巧

  • 错误:访问被拒绝

    原因:当未以管理员权限运行 gpresult 命令时,会出现此错误。没有管理员权限,Windows 限制 RSoP 查询仅限于用户范围的策略数据,并阻止访问计算机范围的设置。当保存 HTML 报告到会话无写权限的路径,或远程查询使用的账户不是目标机器的本地管理员时,也会发生此错误。

    解决此错误的方法:

    • 以提升权限的命令提示符运行,并再次执行 gpresult /r。
    • When saving HTML reports to restricted paths, specify a writable location.
      gpresult /h C:\Users\Personal\gpreport.html.
    • 对于远程查询,确保使用 /u 参数的账户是远程机器本地管理员组的成员。
  • 错误:信息:用户没有 RSOP 数据。

    原因:从非提升权限的命令提示符运行 gpresult 只返回用户范围的设置,Windows 不向标准会话暴露计算机范围的 RSoP。另一个原因是使用与登录用户不同的管理员账户运行命令;此时,gpresult 查询的是提升账户的上下文,而非标准用户,因而返回该消息。

    解决此错误的方法:

    • Re-run the command from an elevated Command Prompt. Add /user DOMAIN\targetuser to query the correct user's policy context.
      gpresult /r /user DOMAIN\john
    • 如果提升权限后仍未获取计算机设置,可能是机器在上次刷新时未连接到 DC。运行 gpupdate /force,然后重试。
  • 错误:预期的 GPO 在 gpresult /r 输出的已应用 GPO 列表中根本未出现。

    原因:该 GPO 可能未链接到正确的 OU,被安全筛选或 WMI 筛选排除,链接被禁用,或被继承阻止。

    解决此错误的方法:

    • 运行 gpresult /z 以显示所有评估的 GPO,包括被拒绝的。
    • 在 GPMC 中检查 GPO 的委派选项卡,确认目标用户或计算机具有读取和应用组策略权限。
    • 验证 GPO 链接是否启用且链接到正确的 OU。

使用 ADManager Plus 简化组策略管理

虽然 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 来:

  • 验证新部署的 GPO 是否实际应用于目标计算机或用户。
  • 当设置未按预期工作时,排查策略冲突。
  • 确认用户或计算机是否位于正确的 OU 并继承了正确的策略。
  • 在合规审查前或期间审核安全设置。
  • 诊断组策略更改后为何特定应用或设置缺失。

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 的权限。

使用 ADManager Plus 简化 GPO 管理的复杂性

Active Directory管理与报告的一站式解决方案
电子邮件下载链接 Email the ADManager Plus download link