Mapar unitats abans que la VPN estigui a punt? Condicioneu-ho al servidor
Un script d'inici de sessió assigna la unitat abans que el túnel tingui ruta. Sondegeu un servidor que només respon a través d'ell, després assigneu a la sessió de l'usuari i registreu el resultat.
La lletra d'unitat apareix en iniciar sessió i després s'obre com una carpeta buida, o amb una creu vermella i un missatge sobre un recurs de xarxa no disponible. Els permisos normalment estan bé. El que va passar és que l'ordre de mapatge es va executar durant la finestra en què el client VPN existia però no hi havia cap ruta al servidor de fitxers, i Windows va enregistrar aquell error com l'estat de la unitat. La solució és deixar de tractar el mapatge com una cosa que passa en iniciar sessió i tractar-lo com l'últim pas d'una seqüència de connexió.
Per què el mapatge s'executa massa aviat
Un script d'inici de sessió comença quan comença la sessió. Un client VPN que es connecta durant l'inici de sessió hi afegeix la seva pròpia línia temporal: el procés pot estar en marxa, l'adaptador virtual pot existir i la ruta a la subxarxa de l'oficina pot continuar absent. Aquests tres estats semblen iguals des del punt de vista de l'script i només un d'ells funciona.
Alguns entorns responen repetint la mateixa línia fallida a cada inici de sessió, cosa que produeix un usuari que ha après a fer doble clic a la unitat i un script que no ha reeixit mai tot sol.
La unitat mateixa ho empitjora. Una unitat mapada és un objecte de sessió, i un cop Windows l'ha marcada com a no disponible, la icona pot quedar trencada molt després que el túnel estigui sa. Per això tornar a mapar a mà funciona mentre l'script sembla que no fa res. La sessió recorda el fracàs, no la intenció que hi havia darrere.
Un estat connectat no és una ruta
La icona de la VPN a la safata indica si el túnel està aixecat. No diu res sobre si existeix una ruta a un servidor concret, si el DNS resol aquest nom a l'adreça del túnel, ni si el tallafoc del propi servidor us accepta.
Són tres fracassos separats amb el mateix resultat visible, i condicionar-ho a la icona de la safata els ajunta en un sol senyal poc fiable.
Una comprovació de disponibilitat que anomena el servidor que realment necessiteu els distingeix, perquè falla fins que funciona el camí concret, i no fins que alguna interfície es declara connectada.
Condicioneu-ho al servidor, no al client
Trieu un amfitrió que només sigui abastable a través del túnel i espereu-lo abans de mapar res. El fragment de sota connecta una entrada de VPN de Windows desada, sondeja el servidor de fitxers i després mapa la unitat.
@echo off
set server=fileserver.corp.example
rasdial "Office VPN" /disconnect
rasdial "Office VPN"
:wait
ping -n 1 -w 1000 %server% >nul || (
timeout /t 5 /nobreak >nul
goto wait
)
net use Z: \\%server%\share /persistent:no
El ping és una sonda de disponibilitat, no una prova de permisos. Si l'ICMP està filtrat a la vostra xarxa, sondegeu en lloc seu el servei que feu servir de debò: net view \\%server% per a una comprovació ràpida, o una prova TCP curta contra el port 445 a PowerShell. Qualsevol de les dues es basa en allò que importa.
Afegiu un nombre limitat d'intents. Un bucle d'espera sense sostre converteix un túnel trencat en una sessió que no acaba mai d'iniciar, i això és una trucada de suport pitjor que una lletra d'unitat absent.
Feu-lo reexecutable i conscient de la sessió
Executeu-lo dins de la sessió del propi usuari. Una tasca que s'executa com a SYSTEM posa la unitat en una sessió completament diferent, i l'usuari que ha iniciat sessió no veu mai el resultat. Així obteniu un script que informa d'èxit i un escriptori sense cap unitat.
Comproveu abans de mapar i elimineu només l'entrada obsoleta. net use Z: /delete retorna un error quan la lletra no s'utilitza, i aquest error es pot ignorar sense problema en lloc de ser un motiu per abandonar la resta de l'script. Manteniu /persistent:no perquè un intent fallit no es converteixi més tard en un intent de reconnexió permanent.
I no poseu cap contrasenya al fitxer. rasdial pot reutilitzar les credencials desades per a l'entrada de VPN, i la unitat compartida s'hauria d'autenticar com l'usuari que ha iniciat sessió. Si la compartició necessita realment credencials diferents, registreu-les una vegada per usuari amb cmdkey en lloc d'incrustar-les en un fitxer batch que viu en una compartició d'inici de sessió. Qualsevol que pugui llegir aquesta compartició pot llegir la contrasenya, cosa que converteix una comoditat en un incident.
Tornar a executar tot l'script hauria de ser inofensiu, perquè és el que passarà. Els usuaris es reconnecten, els portàtils es desperten i el mateix camí de codi torna a executar-se amb un estat inicial diferent.
Registreu prou per demostrar quina meitat va arribar tard
Escriviu la marca de temps, el resultat de la comprovació de disponibilitat i el codi de sortida del mapatge en un fitxer sota el perfil de l'usuari. Quan arribi el proper informe d'una unitat absent, aquest registre respon l'única pregunta que importa: va arribar tard el túnel o va refusar la compartició?
Sense això, cada reaparició s'investiga des de zero, i la conclusió habitual és un canvi de permisos que no arregla res.
Proveu la seqüència una vegada des d'un arrencada en fred i una vegada des de la suspensió. El cas de despertar és on l'ordre es trenca més sovint, perquè la sessió es reprèn abans que la xarxa i l'script veu una màquina que fa hores que ha iniciat sessió.