Ein Windows-VPN-Profil ist ein Eintrag in einem Telefonbuch, und PowerShell ist ein Weg, diesen Eintrag zu bearbeiten. Aus dieser Unterscheidung folgen zwei Fehler: ein vorab geteilter Schlüssel, der schon beschädigt beim Server ankommt, und eine Serveradresse, die aktualisiert aussieht, aber nicht die ist, die der nächste Tunnel wählt. Beides ist leichter zu sehen, wenn Sie das Profil als gespeicherten Zustand behandeln und nicht als Befehl, den Sie ausgeführt haben. Der Ablauf folgt der Reihenfolge der Änderungen: anlegen, ändern, Bereich, zurücklesen.

Das Profil mit einem wörtlichen Schlüssel anlegen

Add-VpnConnection nimmt den vorab geteilten L2TP-Schlüssel über -L2tpPsk an. PowerShell verarbeitet die Zeichenkette, bevor das Cmdlet sie erhält, und innerhalb doppelter Anführungszeichen beginnt ein Dollarzeichen eine Variablenreferenz, während ein Backtick eine Escape-Sequenz beginnt. Ein Schlüssel, der eines davon enthält, kommt kürzer oder mit einem anderen Zeichen an, und das Profil wird erfolgreich mit dem falschen Geheimnis angelegt.

Dann zeigt sich der Fehler bei der IPsec-Authentifizierung, wo der Tunnel sich weigert aufzubauen. Deshalb wird ein Anführungsfehler so oft als serverseitiges Problem gemeldet: Das Profil existiert, der Name stimmt, und das Geheimnis ist still falsch.

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

Einfache Anführungszeichen sind die Lösung, und sie müssen den ganzen Wert umschließen. Existiert der Eintrag bereits mit einem schlechten Schlüssel, ersetzt -Force ihn, oder entfernen Sie das Profil, legen Sie es neu an und testen Sie dann mit einer neuen Verbindung:

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

Halten Sie das echte Geheimnis aus der Shell-Historie und aus gemeinsamen Skripten heraus. Lesen Sie es zur Laufzeit aus dem freigegebenen Speicher und übergeben Sie die Variable statt des Literals, was das Anführungsproblem vollständig vermeidet.

Die Adresse ändern und dann neu verbinden

Set-VpnConnection nimmt durch Leerzeichen getrennte Parameter, keine Zuweisungssyntax. -ServerAddress = "203.0.113.10" zu schreiben übergibt ein zusätzliches Token, und das Cmdlet meldet entweder einen Fehler oder speichert etwas, das Sie nicht beabsichtigt haben. Die richtige Form ist -Name "Office L2TP" -ServerAddress 203.0.113.10.

Selbst mit der richtigen Syntax erreicht die Änderung keinen Tunnel, der bereits steht. Eine bestehende Verbindung behält die Adresse, die sie gewählt hat, bis sie getrennt wird, daher beweist ein Test derselben Sitzung nichts über den neuen Wert. Trennen Sie, bearbeiten Sie, verbinden Sie neu, und bestätigen Sie die Gegenstellenadresse in den Verbindungsdetails.

Manche Eigenschaften lassen sich nicht an Ort und Stelle ändern. Wenn das Cmdlet ablehnt, notieren Sie die vorhandenen Parameter, löschen Sie das Profil und legen Sie es mit den korrigierten Werten neu an, und behalten Sie die ursprünglichen Tunnel- und Authentifizierungseinstellungen bei. Ein Skript, das nur die Telefonnummer ändern muss, kann den Telefonbucheintrag über die RAS-API bearbeiten, statt alles neu zu erzeugen. Welchen Weg Sie auch wählen: Bestätigen Sie danach die gespeicherten Werte, statt der Stille des Befehls zu vertrauen.

Wissen, welches Telefonbuch Sie bearbeitet haben

Ein Profil pro Benutzer liegt im Netzwerkverbindungsverzeichnis dieses Benutzers, und ein Profil für alle Benutzer liegt im maschinenweiten Verzeichnis unter dem Programmdatenbaum. Das sind verschiedene Einträge mit verschiedenen Bereichen, und das Bearbeiten des einen lässt den anderen unberührt.

Deshalb kann eine Änderung zu verschwinden scheinen: Das Skript lief unter einem Konto, und der Test unter einem anderen. Verwenden Sie -AllUserConnection, wenn das Profil zum Rechner gehört, und prüfen Sie beim Zurücklesen denselben Bereich.

Das Profil zurücklesen, bevor Sie testen

Fragen Sie Windows, was es gespeichert hat, statt was Sie übergeben haben:

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

Vergleichen Sie diese Ausgabe mit der Absicht und starten Sie dann eine neue Verbindung. Wenn der Aufbau scheitert, prüfen Sie das RAS-Clientprotokoll in der Ereignisanzeige, bevor Sie das Profil erneut ändern, denn das Protokoll nennt die Stufe, die fehlgeschlagen ist.

Halten Sie das Authentifizierungsdesign beim Bearbeiten intakt. Ein Befehl, der die Adresse ändert, aber das Zertifikat oder die EAP-Konfiguration fallen lässt, erzeugt einen Fehler, der unabhängig von der Änderung wirkt, und der Export des funktionierenden Profils vorab gibt Ihnen etwas zum Wiederherstellen statt einer Vermutung.

Ähnliche Artikel