Delete the route, watch it disappear, and the next connection brings it back. That is not the delete command failing; it is a different object restoring the entry. Your command acted on the live routing table, while something else holds a saved instruction that re-installs the route on every connect. Find the owner before deleting the same entry a third time.

Name the Owner Before Deleting Again

Record the exact destination prefix, the active interface and the profile name while the route is present. Then look at the intended profile in whichever scope holds it, because per-user and all-user connection lists are separate objects. Check whether a script, the VPN service or device management installs the entry as well, and look through startup items when none of the obvious owners explains it. A route added by a scheduled task reappears on a timer rather than on a connection.

Timing narrows the list quickly. A route that returns only on reconnect points at the profile, and one that returns while the connection stays up points at a script, a service or a policy refresh.

Delete the Stored Route, Not the Live One

For a native profile, removal takes the connection name and the destination prefix, with the all-user switch when the connection belongs to the global phone book. Preview first, because the cmdlet supports it and the preview costs nothing:

Remove-VpnConnectionRoute -ConnectionName 'Office VPN' -DestinationPrefix '10.77.0.0/24' -WhatIf
Remove-VpnConnectionRoute -ConnectionName 'Office VPN' -DestinationPrefix '10.77.0.0/24'

That removes the stored instruction rather than a matching live entry, which is the difference that makes the change survive a reconnect. Deleting from the table only buys time until the next connection. Microsoft documents the cmdlet as removing a route from a VPN connection, which is the object you want to change.

Read the output rather than assuming it worked. The cmdlet reports the connection it modified, and the next step confirms the change from the stored configuration instead of from the live table.

Read the Stored Routes Back

Ask the profile what routes it now holds, because the stored collection is the authoritative answer and the table is only a copy. The connection object carries its own route list:

Get-VpnConnection -Name 'Office VPN' | Select-Object -ExpandProperty Routes
Get-VpnConnection -AllUserConnection | Select-Object Name, Routes

A prefix that still appears in that collection will come back on the next connect, however many times it is removed from the table. A prefix that is gone from the collection and still present in the table has a different owner, which sends you back to the timing question.

Compare the two lists while the connection is up. A prefix in the live table and absent from the stored collection is the case that points at scripts and policy, and a prefix present in both is the case the profile owns. That comparison is the whole diagnosis, and it costs one reconnect.

When a Management Policy Owns the Route

A profile provisioned by device management is not yours to edit, and a local change is replaced at the next policy refresh. The sign is a stored route that reappears after a successful removal, or a profile you cannot modify without elevation you do not have. Check the enrolment state of the device before spending more time on the cmdlet.

The corrective action belongs at the policy: remove the prefix from the VPN profile definition in the management console, or from the group policy that deploys it. Ask the owner of that policy to confirm the change rather than editing the local copy again. The device then matches the policy on the next refresh, and the route stays gone for a reason that survives the next deployment.

Record What Owned It

Write down the owner, the scope and the exact command, so the next person does not repeat the investigation from the beginning. Record whether the entry came back and what triggered it, because that is the evidence that the owner was identified correctly. A route that returns after a policy refresh tells you the policy still says so.

Deleting a live route is a legitimate quick test of whether the path matters. It is not a configuration change, and it should not be recorded as one. The change that counts is the one made where the instruction lives.

Akụkọ ndị metụtara ya