Something that applied on the office network stops applying the week a user starts working over VPN, and the tunnel takes the blame before anyone opens a report. Group Policy owns which settings land on the Windows user and computer, fetches the material from the domain, and runs the client-side processing, and those three steps fail in three different ways. The tunnel only changes which path the client has. Walking the checks in order keeps a file-permission problem from being chased as a routing problem.

Start with the setting, not the tunnel

Write down one expected GPO and one concrete setting inside it, then decide whether that setting lives in User Configuration or Computer Configuration. This assumes an authorised domain-joined Windows client on an approved VPN, not an unmanaged or cloud-only device being turned into a domain member. The scope answer decides who can read the result and whether elevation is needed, so settle it before running anything.

Ask the domain administrator which link, object location, security filters and WMI filters are supposed to be in play. Changing those controls to make a test pass is a different project with a different owner.

Read the report as the account that owns the setting

In the affected user's own session, run whoami /user and then gpresult /scope user /r. The account that authenticated the VPN is not automatically the Windows account whose policy you are reading, and a check run from an administrator account answers a different question. Save the baseline to a fresh filename such as %TEMP%\vpn-policy-user-before.html. The gpresult reference documents the scope and output switches, and it is worth knowing that generating a report refreshes nothing.

Computer policy has its own scope and permission context, so inspect it separately with the elevation it needs. Folding both scopes into one report is how a user setting gets declared missing when it was never in that scope.

Discovery is not access: SRV records, then SMB

With the approved VPN connected, confirm that the client resolves domain controllers through the intended DNS path; a public website loading says nothing about controller discovery. For the illustrative domain corp.example, nslookup -type=SRV _ldap._tcp.dc._msdcs.corp.example answers the question you actually have. A returned service record is discovery evidence only, because the selected controller's address still has to be reachable with the required authentication and directory services permitted. Policy material then arrives from SYSVOL, which is an SMB read against that specific controller and not an ICMP test.

Weaker evidence is easy to mistake for proof. An ICMP reply from a controller, next to a denied read of a policy template, produces a report that looks empty for a reason nobody has connected yet.

Keep the deployment's AD service permissions, return paths and time synchronisation coherent rather than replacing them with a blanket firewall opening or a public DNS server. Policy data that differs between controllers is a replication question for the directory owner.

One refresh, two reports, one comparison

With the path proven, request the relevant refresh with gpupdate /target:user and read the result instead of assuming it. The default refresh applies changed policy while /force requests reapplication; neither one repairs DNS, file permissions or filtering. Some extensions only complete at a later sign-in or another foreground event, so a single run is not a verdict. Adding logoff or reboot switches to a remote user's session as a routine diagnostic throws away whatever they had open.

Generate a second report under a different filename and compare the processing time, the expected GPO, its applied or denied status and the setting itself. A report from an earlier successful session proves nothing about this refresh. A policy that was filtered out points at applicability rather than transport, which changes who owns the next step.

Tie the failure to a single activity

In Event Viewer, start with the Group Policy warning or error in the System log, then move to the GroupPolicy Operational log under Applications and Services Logs. Filter that operational log by the activity identifier of the refresh you just ran, because a new refresh gets a new identifier and mixing it with yesterday's events produces a confident, wrong conclusion. Record the time, the user or computer context, the selected controller, the GPO, the error code and the failed dependency.

That record is what the network or directory owner can act on. Connected to the VPN and ran gpupdate several times are not evidence, and neither survives a handover.

Keep the HTML reports private, since they expose internal names, group memberships and security configuration. Once the setting is confirmed, remove the temporary permissions you added instead of leaving them in place.

འབྲེལ་བའི་རྩོམ་ཡིག