Add-VpnConnection: waarom de PSK breekt en het adres blijft staan
PowerShell vouwt een vooraf gedeelde sleutel tussen dubbele aanhalingstekens uit voordat het cmdlet die opslaat, en een actieve tunnel houdt het oude adres tot je opnieuw verbindt.
Een Windows VPN-profiel is een vermelding in een telefoonboek, en PowerShell is een manier om die vermelding te bewerken. Uit dat onderscheid volgen twee fouten: een vooraf gedeelde sleutel die al beschadigd bij de server aankomt, en een serveradres dat bijgewerkt lijkt maar niet het adres is dat de volgende tunnel kiest. Beide zie je makkelijker als je het profiel als opgeslagen toestand behandelt en niet als een opdracht die je hebt uitgevoerd. De uitleg volgt de volgorde van de bewerkingen: aanmaken, wijzigen, bereik, teruglezen.
Het profiel met een letterlijke sleutel aanmaken
Add-VpnConnection neemt de vooraf gedeelde L2TP-sleutel aan via -L2tpPsk. PowerShell verwerkt de tekenreeks voordat het cmdlet die ontvangt, en binnen dubbele aanhalingstekens begint een dollarteken een variabelereferentie terwijl een backtick een escape begint. Een sleutel met een van beide komt korter aan, of met een ander teken, en het profiel wordt met het verkeerde geheim aangemaakt.
Daarna komt de fout bij de IPsec-authenticatie naar voren, waar de tunnel weigert op te komen. Daarom wordt een aanhalingstekenfout zo vaak als een probleem aan de serverkant gemeld: het profiel bestaat, de naam klopt en het geheim is stil verkeerd.
| 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 |
Enkele aanhalingstekens zijn de oplossing, en ze moeten de hele waarde omsluiten. Als de vermelding al met een slechte sleutel bestaat, vervangt -Force die, of verwijder en maak het profiel opnieuw en test dan met een nieuwe verbinding:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Houd het echte geheim buiten de shell-geschiedenis en gedeelde scripts. Lees het tijdens de uitvoering uit de goedgekeurde opslag en geef de variabele door in plaats van het letterlijke, wat het aanhalingstekenprobleem volledig vermijdt.
Het adres wijzigen en daarna opnieuw verbinden
Set-VpnConnection neemt door spaties gescheiden parameters, geen toewijzingssyntaxis. -ServerAddress = "203.0.113.10" schrijven geeft een extra token door, en het cmdlet geeft een fout of slaat iets op dat je niet bedoelde. De juiste vorm is -Name "Office L2TP" -ServerAddress 203.0.113.10.
Zelfs met de juiste syntaxis bereikt de wijziging geen tunnel die al omhoog staat. Een bestaande verbinding houdt het adres dat ze koos tot ze wordt verbroken, dus dezelfde sessie testen bewijst niets over de nieuwe waarde. Verbreek, bewerk, verbind opnieuw en bevestig het adres van de tegenpartij in de verbindingsdetails.
Sommige eigenschappen kun je niet ter plaatse wijzigen. Als het cmdlet weigert, noteer dan de bestaande parameters, verwijder het profiel en maak het opnieuw met de gecorrigeerde waarden, en behoud de oorspronkelijke tunnel- en authenticatie-instellingen. Een script dat alleen het telefoonnummer hoeft te wijzigen, kan de vermelding in het telefoonboek via de RAS-API bewerken in plaats van alles opnieuw te maken. Welke weg je ook kiest, bevestig daarna de opgeslagen waarden in plaats van op de stilte van de opdracht te vertrouwen.
Weten welk telefoonboek je hebt bewerkt
Een profiel per gebruiker staat in de map netwerkverbindingen van die gebruiker, en een profiel voor alle gebruikers staat in de machinebrede map onder de programmagegevensstructuur. Het zijn verschillende vermeldingen met een verschillend bereik, en het bewerken van de ene laat de andere ongemoeid.
Daarom kan een wijziging lijken te verdwijnen: het script liep onder het ene account en de test onder het andere. Gebruik -AllUserConnection als het profiel bij de machine hoort, en controleer hetzelfde bereik wanneer je het terugleest.
Lees het profiel terug voordat je test
Vraag Windows wat het heeft opgeslagen in plaats van wat je hebt doorgegeven:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Vergelijk die uitvoer met de bedoeling en start dan een nieuwe verbinding. Als het kiezen mislukt, controleer dan het RAS-clientlogboek in Logboeken voordat je het profiel opnieuw wijzigt, want het logboek noemt de fase die mislukte.
Houd het authenticatieontwerp intact terwijl je bewerkt. Een opdracht die het adres wijzigt maar het certificaat of de EAP-configuratie laat vallen, levert een fout op die los van de bewerking lijkt te staan, en het exporteren van het werkende profiel vooraf geeft je iets om te herstellen in plaats van een gok.