Tuve los mismos problemas y también necesitaba que el script no volviera a abrir la interfaz de usuario si ya estaba conectado y que esperara a que finalizara la conexión.
No pude encontrar una buena solución, así que escribí la mía. Está aquí en caso de que sea útil para otros:
https://www.pretentiousname.com/miscsoft/index.html#ConnectOpenVPN
Windows Vista y superior; gratis; incluye código fuente de C ++.
(También existe una herramienta similar y más antigua para el cliente VPN incorporado de Windows).
Ejemplo de uso, con el modificador / verbose que genera información detallada sobre lo que está haciendo:
C: \> ConnectOpenVPN.exe / connect / adapter "OpenVPN" / config "MyVPN.ovpn"
ConnectOpenVPN: Comprobando el estado del adaptador de red "OpenVPN" ...
ConnectOpenVPN: el adaptador de red "OpenVPN" no está conectado.
ConnectOpenVPN: Ejecutando: "C: \ Archivos de programa \ OpenVPN \ bin \ openvpn-gui.exe" --command connect "MyVPN.ovpn"
ConnectOpenVPN: esperando que aparezca la GUI de OpenVPN ...
ConnectOpenVPN: OpenVPN GUI encontrado.
ConnectOpenVPN: esperando que la GUI de OpenVPN se cierre ...
ConnectOpenVPN: OpenVPN GUI cerrada.
ConnectOpenVPN: esperando / confirmando la conexión VPN existe ...
ConnectOpenVPN: conectado.
ConnectOpenVPN: CONNECT action finshed.
Espero que sea útil para otras personas.