En Windows VPN-profil er en post i en telefonbog, og PowerShell er én måde at redigere den post på. To fejl følger af den skelnen: en forudelt nøgle, der ankommer til serveren allerede ødelagt, og en serveradresse, der ser opdateret ud, men ikke er den, den næste tunnel ringer til. Begge er lettere at se, når du behandler profilen som gemt tilstand i stedet for som en kommando, du har kørt. Gennemgangen følger den rækkefølge, ændringerne sker i: opret, ændr, omfang, læs tilbage.

Byg profilen med en bogstavelig nøgle

Add-VpnConnection tager den forudelte L2TP-nøgle gennem -L2tpPsk. PowerShell behandler strengen, før cmdlet'en modtager den, og inde i dobbelte anførselstegn starter et dollartegn en variabelreference, mens en backtick starter en escape. En nøgle, der indeholder en af dem, ankommer kortere eller med et andet tegn, og profilen oprettes korrekt med den forkerte hemmelighed.

Så viser fejlen sig ved IPsec-godkendelsen, hvor tunnelen nægter at rejse sig. Derfor rapporteres en anførselstegnsfejl så ofte som et problem på serversiden: profilen findes, navnet er rigtigt, og hemmeligheden er stille og roligt forkert.

How you write itWhat PowerShell doesResult
"p@ss$word!42"Expands $word as a variableStored key is truncated
Double-quoted with an escape characterConsumes the next character as an escapeOne character disappears
'p@ss$word!42'Keeps the literal charactersStored key matches the secret

Enkelte anførselstegn er løsningen, og de skal omslutte hele værdien. Hvis posten allerede findes med en dårlig nøgle, erstatter -Force den, eller fjern og genskab profilen, og test derefter med en ny forbindelse:

Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force

Hold den rigtige hemmelighed ude af shell-historikken og delte scripts. Læs den under kørsel fra det godkendte lager, og send variablen i stedet for det bogstavelige, hvilket helt undgår anførselstegnsproblemet.

Skift adressen, og genopret derefter forbindelsen

Set-VpnConnection tager mellemrumsadskilte parametre, ikke tildelingssyntaks. At skrive -ServerAddress = "203.0.113.10" sender et ekstra token, og cmdlet'en giver enten en fejl eller gemmer noget, du ikke havde tænkt dig. Den korrekte form er -Name "Office L2TP" -ServerAddress 203.0.113.10.

Selv med den rigtige syntaks når ændringen ikke en tunnel, der allerede er oppe. En etableret forbindelse beholder den adresse, den ringede til, indtil den afbrydes, så test af den samme session beviser intet om den nye værdi. Afbryd, rediger, genopret forbindelsen, og bekræft modpartens adresse i forbindelsens detaljer.

Nogle egenskaber kan ikke ændres på stedet. Når cmdlet'en afviser, noter de eksisterende parametre, slet profilen, og opret den igen med de rettede værdier, og behold de oprindelige tunnel- og godkendelsesindstillinger. Et script, der kun skal ændre telefonnummeret, kan redigere telefonbogsposten gennem RAS API i stedet for at genskabe alt. Uanset hvilken vej du vælger, skal du bagefter bekræfte de gemte værdier i stedet for at stole på kommandoens tavshed.

Vid, hvilken telefonbog du redigerede

En profil pr. bruger ligger i den brugers mappe for netværksforbindelser, og en profil for alle brugere ligger i den maskinomspændende mappe under programdata-træet. Det er forskellige poster med forskelligt omfang, og redigering af den ene lader den anden være urørt.

Derfor kan en ændring se ud til at forsvinde: scriptet kørte som én konto, og testen som en anden. Brug -AllUserConnection, når profilen hører til maskinen, og kontrollér det samme omfang, når du læser den tilbage.

Læs profilen tilbage, før du tester

Spørg Windows, hvad den gemte, i stedet for hvad du sendte:

Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod

Sammenlign det output med hensigten, og start derefter en ny forbindelse. Hvis opkaldet mislykkes, så tjek RAS-klientloggen i Event Viewer, før du ændrer profilen igen, for loggen navngiver det trin, der fejlede.

Behold godkendelsesdesignet intakt, mens du redigerer. En kommando, der ændrer adressen, men smider certifikatet eller EAP-konfigurationen væk, giver en fejl, der ser ud til at være uden forbindelse med redigeringen, og eksport af den fungerende profil på forhånd giver dig noget at gendanne i stedet for et gæt.

Relaterede artikler