Executar unha tarefa cando se conecta a VPN: evento, sondaxe ou credencial?
Un script de inicio execútase antes de que exista o túnel. Compare un disparador de evento de rede, unha sondaxe de recurso e credenciais gardadas polo que garante cada un.
Un script de inicio de sesión que asigna unha unidade ou inicia un traballo de sincronización execútase antes de que o túnel teña enderezo, así que falla en silencio e o usuario repárao a man cada mañá. Windows non ofrece á maioría dos clientes ningunha chamada de retorno por VPN conectada, pero si rexistra o cambio de rede, e ese rexistro pode iniciar o traballo no momento axeitado. A elección está entre reaccionar a ese rexistro, sondar o recurso e eliminar o aviso que facía visible o fallo.
Comparar os tres mecanismos polo que garanten supera ordenalos pola elegancia. Cada un falla de xeito distinto, e o modo de fallo é o que un soporta despois.
Por que o inicio de sesión se dispara demasiado pronto
O inicio de sesión e o arranque execútanse antes de que o adaptador VPN reciba o seu enderezo, así que unha asignación de unidade, un URL interno ou unha conexión de base de datos intentados nese momento non teñen nin ruta nin resolución. A solicitude falla e a sesión queda nun estado que o usuario debe reparar manualmente. Mover o mesmo script ao cartafol de inicio non cambia nada, porque o problema de orde viaxa con el. O disparador ten que ser un cambio de rede e non un evento de sesión.
Unha tarefa programada ao iniciar sesión cun atraso arbitrario parece unha solución e en realidade é unha conxectura. Funciona nunha ligazón rápida e falla nunha lenta, que é o tipo de fiabilidade menos útil.
Tres ganchos comparados
Os mecanismos difiren no que observan, con que rapidez reaccionan e que fan ante unha reconexión máis tarde ese día. A táboa compáraos neses tres puntos e non no enxeñoso que soa cada un.
| Mechanism | Reacts to | Covers a mid-session reconnect | Typical failure |
|---|---|---|---|
| Network profile event | A network connect record | Yes, when the event repeats | Runs on the wrong network |
| Resource poll with backoff | The resource becoming reachable | Yes | Log noise and a wasted window |
| Stored credentials alone | Nothing; it removes a prompt | No | Still fires before the tunnel |
Lea a táboa fila por fila. O gancho de evento é o máis rápido e o máis ruidoso, xa que Windows rexistra todas as redes, incluída a Wi-Fi da cafetería, así que a acción debe verificar o recurso antes de facer nada. A sondaxe é máis lenta e máis precisa, porque ten éxito exactamente cando responde o recurso compartido ou o nome de host, e non necesita saber que cliente está instalado. As credenciais gardadas non son ningunha opción competidora: eliminan o aviso de contrasinal, que é un segundo motivo independente polo que falla unha asignación ao iniciar sesión.
Escoller entre os dous primeiros depende de se existe un evento utilizable no cliente. Onde existe, un evento máis unha comprobación do recurso é o mellor valor predeterminado.
Constrúa correctamente o disparador de evento
O rexistro vive no rexistro Microsoft-Windows-NetworkProfile/Operational, e o ID 10001 marca unha rede que acaba de conectarse. Cree a tarefa cun disparador Ao producirse un evento dirixido a ese rexistro, ese nome de provedor e ese identificador. Toda rede á que se una a máquina activarao, así que a acción necesita unha cláusula de protección en lugar dunha suposición, e só debería executarse mentres o usuario teña a sesión iniciada se o traballo toca unidades asignadas.
A cláusula de protección debería comprobar o que a tarefa necesita de verdade, como unha ruta compartida ou un porto de servizo, e saír en silencio cando non sexa accesible. Comprobar o nome do adaptador non abonda, porque un cliente pode reutilizar un adaptador en varios perfís. Unha saída silenciosa mantén lexible o rexistro e evita unha tormenta de reintentos contra unha rede que nunca servirá o recurso.
Comprobe que a tarefa se executa no momento axeitado
Demostre o momento, non a configuración. Os comandos seguintes mostran a definición da tarefa, os eventos recentes do perfil de rede e se se pode acceder ao recurso desde a conta coa que se executa a tarefa. Execúteos tras unha reconexión real e non tras un inicio manual.
schtasks /query /tn "VpnPostConnect" /v /fo LIST
Get-WinEvent -LogName Microsoft-Windows-NetworkProfile/Operational -MaxEvents 10
Test-Path \\fileserver\share
whoami
Unha entrada do historial de tarefas que existe mentres non coincide ningún evento de rede significa que o disparador está mal e non a acción. Se aparecen os eventos e a tarefa non, pode que a tarefa se execute cunha conta que non ve o recurso, e a saída da conta é a pista. Unha comprobación do recurso que pasa mentres a asignación segue faltando apunta ao contexto de sesión e non á conectividade. Cada unha desas tres observacións lévano a unha solución distinta.
Escriba unha liña de rexistro por execución co enderezo, o resultado do recurso e o desenlace. O seguinte fallo mostrará entón se a tarefa se executou pronto, se executou na rede equivocada ou se non se executou nunca.