La respuesta aceptada por Mikael es excelente, a excepción de la contraseña de texto sin formato en 5.3, que simplemente me marea. La forma en que funciona mi conexión VPN (a través de IKEv2), rasdial no necesita el nombre de usuario y la contraseña como parámetros.
Pero si su situación es diferente, hay formas de evitar la contraseña de texto sin formato en el script:
Este artículo explica cómo cifrar y guardar texto usando Powershell: https://www.pdq.com/blog/secure-password-with-powershell-encrypting-credentials-part-1/
Para resumir: usando la función ConvertTo-SecureString puede cifrar texto de tal manera que solo (los procesos que se ejecutan bajo) el mismo usuario, en la misma máquina, puedan descifrarlo. Lo cual no es perfectamente seguro, pero es mejor que el texto sin formato. El comando powershell para cifrar y guardar "MyP @ ssword1" en un archivo sería:
"MyP@ssword1" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "C:\path to\your\Password.txt"
Y aquí encontrará cómo leer y descifrar la contraseña nuevamente:
/programming//a/19950628/4602253