Add-VpnConnection: de ce se strică PSK și de ce rămâne adresa veche
PowerShell extinde o cheie partajată în prealabil între ghilimele duble înainte ca cmdletul să o salveze, iar un tunel activ păstrează adresa veche până vă reconectați.
Un profil VPN Windows este o intrare într-o carte de telefoane, iar PowerShell este o modalitate de a edita acea intrare. Din această distincție decurg două eșecuri: o cheie partajată în prealabil care ajunge la server deja coruptă și o adresă de server care pare actualizată, dar nu este cea pe care o va apela următorul tunel. Ambele se văd mai ușor dacă tratați profilul ca stare salvată, nu ca o comandă pe care ați rulat-o. Prezentarea urmează ordinea modificărilor: creare, schimbare, domeniu, recitire.
Creați profilul cu o cheie literală
Add-VpnConnection acceptă cheia partajată în prealabil L2TP prin -L2tpPsk. PowerShell procesează șirul înainte ca cmdletul să îl primească, iar între ghilimele duble semnul dolar începe o referință la variabilă, în timp ce un backtick începe o secvență de escape. O cheie care conține oricare dintre ele ajunge mai scurtă sau cu un alt caracter, iar profilul este creat cu secretul greșit.
Apoi eșecul apare la autentificarea IPsec, unde tunelul refuză să se ridice. De aceea o eroare de ghilimele este raportată atât de des ca problemă de partea serverului: profilul există, numele este corect, iar secretul este în liniște greșit.
| How you write it | What PowerShell does | Result |
|---|---|---|
| "p@ss$word!42" | Expands $word as a variable | Stored key is truncated |
| Double-quoted with an escape character | Consumes the next character as an escape | One character disappears |
| 'p@ss$word!42' | Keeps the literal characters | Stored key matches the secret |
Ghilimelele simple sunt soluția și trebuie să încadreze întreaga valoare. Dacă intrarea există deja cu o cheie proastă, -Force o înlocuiește, sau ștergeți și recreați profilul, apoi testați cu o conexiune nouă:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Țineți secretul real în afara istoricului shell-ului și a scripturilor partajate. Citiți-l la execuție din depozitul aprobat și transmiteți variabila în locul literalului, ceea ce evită complet problema ghilimelelor.
Schimbați adresa, apoi reconectați-vă
Set-VpnConnection acceptă parametri separați prin spații, nu sintaxă de atribuire. Scrierea -ServerAddress = "203.0.113.10" transmite un token suplimentar, iar cmdletul fie dă eroare, fie salvează ceva ce nu intenționați. Forma corectă este -Name "Office L2TP" -ServerAddress 203.0.113.10.
Chiar și cu sintaxa corectă, modificarea nu ajunge la un tunel deja ridicat. O conexiune stabilită păstrează adresa pe care a apelat-o până la deconectare, așa că testarea aceleiași sesiuni nu demonstrează nimic despre valoarea nouă. Deconectați-vă, editați, reconectați-vă și confirmați adresa partenerului în detaliile conexiunii.
Unele proprietăți nu pot fi schimbate la fața locului. Când cmdletul refuză, notați parametrii existenți, ștergeți profilul și recreați-l cu valorile corectate, și păstrați setările originale ale tunelului și autentificării. Un script care trebuie să schimbe doar numărul de telefon poate edita intrarea din cartea de telefoane prin API RAS în loc să recreeze totul. Indiferent de calea aleasă, confirmați apoi valorile salvate în loc să vă bazați pe tăcerea comenzii.
Să știți ce carte de telefoane ați editat
Un profil per utilizator stă în directorul de conexiuni de rețea al acelui utilizator, iar un profil pentru toți utilizatorii stă în directorul la nivel de mașină, sub arborele de date al programelor. Sunt intrări diferite cu domenii diferite, iar editarea uneia o lasă pe cealaltă neatinsă.
De aceea o modificare poate părea că dispare: scriptul a rulat sub un cont, iar testul sub altul. Folosiți -AllUserConnection când profilul aparține mașinii, și verificați același domeniu când îl recitiți.
Recitiți profilul înainte de testare
Întrebați Windows ce a salvat, nu ce ați transmis:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Comparați acea ieșire cu intenția, apoi porniți o conexiune nouă. Dacă apelarea eșuează, verificați jurnalul clientului RAS în Event Viewer înainte de a schimba din nou profilul, pentru că jurnalul numește etapa care a eșuat.
Păstrați nealterat proiectul de autentificare în timpul editării. O comandă care schimbă adresa dar renunță la certificat sau la configurația EAP produce un eșec care pare fără legătură cu editarea, iar exportul profilului funcțional înainte vă dă ceva de restaurat în loc de o presupunere.