Skip to content

Group Policy Not Applying? Common Fixes for Windows Server Domains

Work through why a GPO won't apply — gpupdate, gpresult, link and scope, security and WMI filtering, SYSVOL replication, slow links, and loopback — with the commands to prove it.

MGMCSA Guru Team July 29, 2026 10 min read
Diagram-style cover showing a GPO flowing through link, scope, security filtering, and WMI filter checks before reaching a user and computer

You build a GPO, link it, run gpupdate /force on the test machine, and the setting doesn’t take. So you run it again. Still nothing. Group Policy has a reputation for being temperamental, but it’s actually very deterministic — a GPO either reaches an object and applies, or it gets filtered out somewhere along the way for a reason you can see. The trick is to stop guessing and ask the client what it actually received.

This guide goes through the usual reasons a policy won’t apply, roughly in the order worth checking. The single most useful habit is leading with gpresult instead of gpupdate: one tells you what’s wrong, the other just retries. We’ll cover linking and scope, security and WMI filtering, the SYSVOL replication problem people forget about, slow-link detection, and loopback processing — with the commands to confirm each.

Start with gpresult, not gpupdate

gpupdate /force is everyone’s reflex, and it’s the wrong first move. All it does is reapply the policies that already reach the client. If a GPO is being filtered out, forcing an update does nothing — it can’t apply a policy it isn’t receiving.

The right first command is gpresult, which reports what the client genuinely got:

gpresult /r

That prints applied GPOs and, under “the following GPOs were not applied because they were filtered out,” the ones that were rejected and why. For the full picture, generate the HTML report — it’s far easier to read and shows the filtering reason per GPO:

gpresult /h C:\Temp\gpresult.html

Once gpresult tells you whether the GPO is reaching the target, you know which branch to follow: if it’s listed as denied, it’s a filtering/scope problem; if it’s not listed at all, it’s a link or replication problem; if it’s listed as applied but the setting isn’t there, it’s precedence or a conflicting GPO.

A GPO does nothing until it’s linked to a site, domain, or OU — and it only affects objects in that container (and below, unless inheritance is blocked). Two scoping mistakes are extremely common:

  • Linked to the wrong OU. The user or computer object lives somewhere else, so the GPO never sees it. Confirm where the object actually is in Active Directory Users and Computers, then confirm the GPO is linked to that OU or a parent of it.
  • User settings linked to a computer OU (or vice versa). This is the big one. A GPO with only User Configuration settings linked to an OU that contains only computer objects applies to nobody. User settings follow the user object’s location; computer settings follow the computer object’s location.

Which settings apply where

Computer Configuration Applies to computer objects in the linked OU (and below)
User Configuration Applies to user objects in the linked OU (and below)
Link enabled? A link can exist but be disabled — check the link is active, not just present
Block Inheritance / Enforced A child OU with Block Inheritance can stop a parent GPO; an Enforced link overrides the block

Also check whether the GPO itself is half-disabled. In the Group Policy Management Console, a GPO’s status can disable the User half, the Computer half, or both — a GPO with “Computer configuration settings disabled” will silently ignore everything you put in that section.

Cause 2: Security filtering and group membership

Even when a GPO is linked correctly, it only applies to objects that have both Read and Apply group policy permission on it. By default that’s granted to Authenticated Users, so the GPO applies to everyone in scope. The moment you change security filtering to target a specific group, only members of that group apply it.

Two things bite people here:

  1. The user/computer isn’t in the filtered group. Obvious once you check, easy to overlook. gpresult will list the GPO as filtered out with an access-denied reason.
  2. Group membership changed but the token is stale. Group membership is read at logon (user) or boot (computer). Add a user to the filtering group and they won’t apply the GPO until they log off and back on; add a computer and it needs a reboot. gpupdate alone won’t refresh the group token.

Cause 3: WMI filters evaluating false

A WMI filter attaches a query to a GPO so it only applies where the query returns true — “only laptops,” “only Windows 11,” “only machines with a C: drive over a certain size.” Powerful, and a quiet source of “it’s not applying anywhere.”

If a WMI filter is malformed, queries a class that doesn’t exist on the client, or simply evaluates false on the target, the GPO is skipped. gpresult reports it as denied due to a WMI filter. Test the filter’s query directly on a client to see what it returns:

# Example: does this machine match a "Windows client, not server" filter?
Get-CimInstance -Query "SELECT * FROM Win32_OperatingSystem WHERE ProductType = 1"

If that returns nothing on a machine you expected to match, the filter is excluding it. WMI filters also add a small processing cost on every refresh, so keep them targeted rather than slapping one on every GPO.

Cause 4: SYSVOL replication is broken

Here’s the one people forget because it doesn’t look like a Group Policy problem. Every GPO has two halves: the Group Policy Container (the object in AD) and the Group Policy Template (the actual files — registry.pol, scripts, ADMX-driven settings — stored in SYSVOL). Clients read the AD object to know a GPO exists, then pull the settings from SYSVOL on whichever DC authenticated them.

If SYSVOL isn’t replicating cleanly (DFS-R, or FRS on very old domains), some DCs have the files and some don’t. A client that authenticates against a DC with a stale SYSVOL gets the GPO’s AD object but incomplete or missing settings — so the policy “exists” but doesn’t apply, and the behavior changes depending on which DC the client hit. That intermittency is the signature.

Check that SYSVOL and NETLOGON are shared on every DC and that replication is healthy:

# On each DC: are SYSVOL and NETLOGON shared?
net share

# Check the GPO's version numbers match between AD and SYSVOL
# (mismatched AD vs SYSVOL versions point at a replication gap)

If a DC is missing its SYSVOL/NETLOGON shares entirely, that’s a deeper problem worth fixing first — we walk through it in SYSVOL and NETLOGON missing on a domain controller. And since SYSVOL rides on AD replication, a replication fault underneath can be the real culprit — see forcing Active Directory replication and replication error 1722 when the timing of “applies on one DC, not another” lines up with replication health.

Group Policy measures the link speed between the client and a DC. If it decides the connection is “slow” (below a threshold, historically 500 Kbps), it skips the components that are expensive to process over a slow link — software installation, folder redirection, and disk-quota policies among them — while still applying security settings. VPN clients and branch sites on thin links are the usual victims: their core policies apply but software deployment or folder redirection mysteriously doesn’t.

If a specific type of policy isn’t applying for remote users while everything else is fine, slow-link detection is a strong suspect. The detection behavior and threshold are themselves controlled by a policy (“Configure Group Policy slow link detection”), so you can tune or, carefully, adjust it for sites that need the heavier policies regardless.

Cause 6: Loopback processing (or the lack of it)

Normally, a user’s User Configuration comes from the GPOs linked where the user object lives. On shared machines — terminal servers, kiosks, lab and classroom PCs — that’s often not what you want. You want every user on that machine to get the same experience regardless of who they are.

Loopback processing flips this: the computer applies User Configuration settings from GPOs linked to the computer’s OU. It has two modes:

Loopback processing modes

Merge User's own user-policy applies first, then the computer-OU user-policy applies on top (computer-OU wins on conflict)
Replace The user's own user-policy is ignored entirely; only the computer-OU user-policy applies

Two ways this shows up as “not applying”:

  • You set user settings expecting them on a terminal server, but didn’t enable loopback — so the server applies the user’s normal policy from the user’s OU instead, and your computer-targeted user settings never run.
  • Loopback is enabled in Replace mode somewhere up the tree and is wiping out user settings you expected to apply. gpresult for the user shows the loopback GPO winning.

Enable it in the computer’s GPO under Computer Configuration → Policies → Administrative Templates → System → Group Policy → Configure user Group Policy loopback processing mode, and pick Merge unless you specifically want to discard the user’s own policy.

Group Policy troubleshooting order

  • Run gpresult /r (or /h report) in the correct context — is the GPO reaching the target?
  • Confirm the GPO is linked to the OU the object actually lives in
  • Confirm computer settings target computers and user settings target users
  • Check Block Inheritance / Enforced on the OU chain
  • Verify security filtering includes the object, and Read access is intact
  • Test any WMI filter's query on the client
  • Confirm SYSVOL/NETLOGON are shared and replicating on all DCs
  • For remote users, rule out slow-link detection on heavy policies
  • On shared machines, confirm loopback mode is set as intended
  • Only then run gpupdate /force and re-check with gpresult

Wrapping up

Group Policy isn’t flaky — it’s just layered. A GPO has to be linked to the right OU, target the right object type, survive security and WMI filtering, and have its files present in a healthy SYSVOL before a client ever applies it. When something doesn’t take, gpresult tells you which of those layers is saying no, and that turns a guessing game into a five-minute fix.

Build the habit of leading with gpresult /r, checking scope and filtering before you blame the setting, and remembering that intermittent, site-dependent failures usually trace back to SYSVOL or AD replication rather than the policy itself. Save gpupdate /force for last — it’s the retry, not the diagnosis.

Frequently asked questions

Why is my GPO not applying even after gpupdate /force?

gpupdate /force only reapplies the policies that already reach the client — it doesn't fix a GPO that's being filtered out. If the GPO isn't linked to the right OU, the object isn't in scope, security filtering excludes it, or a WMI filter evaluates false, forcing an update changes nothing. Run gpresult /r to see whether the GPO is even reaching the target.

How do I see which GPOs are actually applied to a computer or user?

Run gpresult /r for a summary in the console, or gpresult /h report.html for a full HTML report showing applied and denied GPOs with the reason each was filtered. Run it in the context that matters — an elevated prompt for computer policy, the user's own session for user policy.

Does a GPO apply to the users or the computers in the OU it's linked to?

It depends on which settings the GPO contains. Computer Configuration settings apply to computer objects in (or below) the linked OU; User Configuration settings apply to user objects there. Linking a user-settings GPO to an OU that only holds computers does nothing, which is a frequent mistake.

Why does a GPO apply to some users but not others?

Usually security filtering or group membership. A GPO only applies to objects that have both Read and Apply Group Policy permission, which is granted to Authenticated Users by default but is often narrowed to a specific group. Users added to that group after their last logon also need a refresh to pick it up.

Can a SYSVOL replication problem stop Group Policy from working?

Yes. A GPO has two parts — the object in AD and the files in SYSVOL. If SYSVOL isn't replicating, a domain controller may have the policy's AD object but not its files (or vice versa), so clients authenticating against that DC get incomplete or no policy. Healthy SYSVOL/DFS-R replication is a prerequisite for reliable GPO delivery.

What is loopback processing and when do I need it?

Loopback processing makes a computer apply User Configuration settings based on the computer's OU rather than the user's. It's used on shared or kiosk machines, terminal servers, and lab PCs where you want the same user experience regardless of who logs on. Enable it in Merge or Replace mode in the computer's GPO.

Sources & further reading

Official vendor documentation referenced while writing this guide.

MG

MCSA Guru Team

IT & Systems Administration

We are working IT pros and system administrators who spend our days in Windows Server, Microsoft 365, and the wider Microsoft stack. MCSA Guru is where we write down the fixes and walkthroughs we wish we had found the first time.

MCSA Guru provides independent, educational IT guidance. Microsoft, Windows, Windows Server, Microsoft 365, Exchange, and Microsoft Teams are trademarks of Microsoft Corporation; Docker is a trademark of Docker, Inc. MCSA Guru is not affiliated with or endorsed by Microsoft or Docker. Always test changes in a safe environment before applying them in production.

Related guides

Fixing something right now?

Jump straight into the guide library or search for the exact error or task you are dealing with.