Windows · Group Policy

Resultant Set of Policy and gpresult

How to see exactly which Group Policy settings actually applied to a user or computer, which GPOs lost, and why, using RSoP, gpresult, and their PowerShell and GUI equivalents.

Quick idea: Resultant Set of Policy is the final, merged answer to “which Group Policy settings actually apply here,” and gpresult is the tool that prints that answer without guesswork.
RSoP

The calculated result of every GPO that applies to a user or computer, after precedence and filtering.

gpresult

The command-line tool that queries and prints RSoP data, locally or against a remote computer.

Winning GPO

For every setting, RSoP records which GPO applied it and which competing GPOs lost and why.

What Is Resultant Set of Policy?

A single user logging into a single computer can be in scope for a dozen Group Policy Objects at once: one linked to the domain, several linked to organisational units at different levels, maybe one from a site. Some of those GPOs configure the same setting differently. RSoP is the answer to what actually wins after Windows applies inheritance, link order, enforcement, block-inheritance, and security filtering.

Think of RSoP as a receipt printed after checkout, not the shopping cart itself. The cart is every GPO that is linked and in scope; the receipt is what you were actually charged: the final setting values, and which GPO is responsible for each one.

RSoP has two modes. Logging mode reports the settings actually applied to a computer and the user currently logged on, based on real processing that already happened. Planning mode (Group Policy Modeling in GPMC) simulates what would apply if you moved an object, changed group membership, or linked a new GPO, without touching anything.

Important: Since Windows Vista Service Pack 1, the RSoP GUI snap-in no longer displays every Group Policy setting. gpresult remains the complete, authoritative source. Use the GUI for a quick look and gpresult when you need the full picture.

How Windows Calculates the Result

GPOs apply in a fixed order: local policy, then site, then domain, then organisational units from the top down, with the closest OU to the object processed last and normally winning conflicts. A GPO can be enforced to override that, and a container can block inheritance from above it. Security filtering and WMI filtering decide whether a given GPO applies to a specific user or computer at all before any of that ordering matters.

RSoP does not recalculate that logic itself. It reports what Group Policy processing already decided, complete with a Winning GPO for every applied setting and a reason for every GPO that tried to set something and lost.

Reading Results in the GUI

Two GUI paths exist, and they answer different questions.

Group Policy Results, run from the Group Policy Management Console (gpmc.msc), right-click Group Policy ResultsGroup Policy Results Wizard, pick a computer and user, and it queries that machine for real, already-applied RSoP data. This is what most people mean by “run an RSoP report”: it shows the Winning GPO for every setting on the Settings tab. Reading remote results requires either local admin rights on the target computer or the delegated Remotely access Group Policy Results data permission on the domain or OU containing it.

Group Policy Modeling, in the same console, is the planning-mode sibling. It simulates a deployment (a different OU, a different security group, a slow link, loopback processing) on a domain controller and shows the net effect without applying anything. It never touches local GPOs, so an object with a local policy layer can show a small gap between the model and reality.

The older standalone snap-in, rsop.msc, still works for a quick logging-mode look at a single computer: mmc → Add/Remove Snap-in → Resultant Set of Policy → Generate RSOP data → Logging Mode. It is the same underlying data as Group Policy Results, just without the GPMC wrapper, useful when GPMC itself isn’t installed.

Tool Mode Best For
Group Policy Results (GPMC)LoggingWhat actually applied, with Winning GPO per setting
Group Policy Modeling (GPMC)PlanningSimulating a move, group change, or new GPO before you make it
rsop.mscLoggingA quick local look without opening full GPMC
gpresultLoggingComplete data, scriptable, works over the command line and remotely

gpresult From the Command Line

gpresult runs on the local computer by default and can query a remote one with /s. It requires exactly one output option: /r, /v, /z, /x, or /h. Every invocation except /? needs one.

Flag Meaning
/rSummary data: which GPOs applied, which were filtered out.
/vVerbose. Adds detailed settings for items with precedence 1.
/zEverything: every setting at precedence 1 and higher. Large output; redirect it to a file.
/x <file>Saves an XML report. Can’t be combined with /u, /p, /r, /v, or /z.
/h <file>Saves an HTML report. Same combination restrictions as /x.
/fForces /x or /h to overwrite an existing file.
/s <system>Targets a remote computer instead of the local one.
/user <domain\user>Targets a specific user’s RSoP data.
/scope {user | computer}Limits the report to just user or just computer policy. Omit it to get both.
# Quick summary of what applied to the current user and computer
gpresult /r

# Full HTML report, opened in a browser afterwards
gpresult /h C:\Reports\gpresult.html /f

# Everything available, redirected to a text file (large output)
gpresult /z > policy.txt

# Query a remote computer for a specific user's results only
gpresult /s srvmain /user contoso\jdoe /scope user /r

# Query a remote computer using alternate credentials
gpresult /s srvmain /u contoso\admin /p /r
Practical note: Start with gpresult /r. It lists applied and denied GPOs with a reason for each denial, which is usually enough to spot a security filter or WMI filter mismatch without wading through /z output.

Get-GPResultantSetOfPolicy in PowerShell

The GroupPolicy PowerShell module, installed alongside GPMC, has a scriptable equivalent: Get-GPResultantSetOfPolicy. It only returns logging-mode data (the actual applied result), not modeling; for planning-mode simulation you still need the GPMC wizard.

# Report for the current session's user and local computer
Get-GPResultantSetOfPolicy -ReportType Html -Path "C:\Reports\LocalUserAndComputer.html"

# Report for a specific remote computer only
Get-GPResultantSetOfPolicy -ReportType Html -Path "C:\Reports\computer-08.html" -Computer "computer-08.contoso.com"

# Report for a specific user, XML format for programmatic parsing
Get-GPResultantSetOfPolicy -ReportType Xml -Path "C:\Reports\jdoe.xml" -User "contoso\jdoe"

-ReportType and -Path are both mandatory; -ReportType only accepts Html or Xml. Leaving out -Computer and -User reports on whichever computer and user the session is currently running as.

Installing GPMC

On Windows Server, GPMC is a feature, not installed by default on every role:

# Install GPMC on a Windows Server
Install-WindowsFeature -Name GPMC

On a Windows 10/11 client, GPMC ships as an RSAT capability rather than a server feature, and only on Pro, Enterprise, or Education editions:

# Install GPMC on a Windows 10/11 client (requires internet access for RSAT)
Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0

Digging Deeper: the gpsvc Debug Log

When gpresult shows a GPO applied but the setting still isn’t taking effect on the machine, the gap is usually between the Group Policy Client service reading the GPO and a Client Side Extension actually writing it. The gpsvc.log debug log records that handoff.

# Enable Group Policy Client service debug logging
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Diagnostics" /v GPSvcDebugLevel /t REG_DWORD /d 0x30002 /f

# Create the log folder first - gpsvc.log is never written if this is missing
mkdir C:\Windows\Debug\Usermode

# Trigger processing so the log actually gets written
gpupdate /force
Production note: On older multiprocessor Windows 7 / Server 2008 R2 hosts, concurrent computer and user policy threads can lose log lines under heavy logging. Run gpupdate /force /target:computer and gpupdate /force /target:user separately when you need a clean trace on those hosts.

The resulting log lands at C:\Windows\Debug\Usermode\gpsvc.log. Turn GPSvcDebugLevel back off (delete the value, or set it to 0) once you’re done; it’s not something to leave running.

Common Causes When a GPO Doesn’t Show Up

Cause How to Confirm Fix
Security filtering excludes the user or computer gpresult /r lists the GPO under “denied” with a permissions reason. Grant the target Read and Apply Group Policy permissions on the GPO, or add it to the correct security group.
WMI filter doesn’t match The Group Policy Modeling report shows the GPO filtered out by its linked WMI filter. Review the WMI filter’s query against the target’s actual OS, architecture, or hardware attributes.
A higher-precedence GPO overrides the setting Check the Winning GPO column in the Settings tab of a Group Policy Results report. Adjust link order, or enforce the intended GPO if it needs to override a closer-scoped one.
Block Inheritance is set on the OU The GPMC console shows a blue exclamation icon on the OU; an enforced parent GPO still applies despite it. Remove Block Inheritance if unintended, or enforce the parent GPO so it applies regardless.
Client can’t read SYSVOL (Event 1058) Event Viewer, Application log, source Group Policy, Event ID 1058, naming the failed GPO path. Check DNS resolution and connectivity to the domain controller named in the event, and confirm SYSVOL replication (FRS or DFSR) has caught up.
GPO applied but the setting on disk didn’t change gpsvc.log confirms the GPO processed; the registry value or file the Client Side Extension should have written is still the old value. Check the specific CSE’s own debug log, or watch the target value with Process Monitor to see what’s overwriting it after policy runs.

Final Thoughts

RSoP and gpresult turn “why isn’t this policy applying” from a guessing game into a lookup. Start with gpresult /r or the GPMC Results Wizard for the summary, escalate to /z or the gpsvc log when the summary doesn’t explain it, and use Group Policy Modeling before you make a change instead of after it breaks something.

Get comfortable reading a Results report end to end, and most Group Policy problems become a five-minute diagnosis instead of an afternoon of re-linking GPOs and hoping.

Key takeaway: gpresult /r is the first command to run for any “this GPO isn’t applying” ticket. It names every GPO that applied or was denied, and why, in one pass.
Next in this series

Next, we can look at Group Policy Preferences item-level targeting in more depth, or trace a specific processing failure end to end using the gpsvc log techniques covered here.