If you ever have a need to programmatically check whether machine is currently connected to Pulse Secure VPN (so you can check it as a pre-requisite or opposite – to not proceed if user is connected to VPN), there is a simple Powershell command that can get you current status from registry:

[BOOL](Get-ItemProperty -Path 'HKLM:\SOFTWARE\WOW6432Node\Pulse Secure\Pulse\State' -EA SilentlyContinue).VpnTunnelEstablished

Now, the Pulse Secure VPN app itself is responsible for changing this registry value, so it can be inaccurate in cases where the app crashes for example. But from my experience, this detection works really well in practise.

You can use an Event Viewer trigger too – for example for task scheduler (to do something immediately after user connects to VPN – like gpupdate /force or whatever else).

In Windows Event Viewer, under Applications and Services Logs tree – Pulse Secure – Operational event you should focus on two Event IDs:

Event ID 100 – User initiated new connection (but is still pending actuall connection to be established)
Event ID 312 – Connection established

These you can then use for example as a trigger in task scheduler: