Profil VPN w Windows to wpis w książce telefonicznej, a PowerShell to jeden ze sposobów edycji tego wpisu. Z tego rozróżnienia wynikają dwa błędy: wcześniej udostępniony klucz, który dociera do serwera już uszkodzony, oraz adres serwera, który wygląda na zaktualizowany, ale nie jest tym, na który zadzwoni następny tunel. Oba łatwiej zauważyć, gdy traktujesz profil jako zapisany stan, a nie jako polecenie, które uruchomiłeś. Omówienie idzie w kolejności zmian: utworzenie, zmiana, zakres, odczyt zwrotny.

Utwórz profil z dosłownym kluczem

Add-VpnConnection przyjmuje wcześniej udostępniony klucz L2TP przez -L2tpPsk. PowerShell przetwarza ciąg, zanim polecenie cmdlet go otrzyma, a w cudzysłowach znak dolara rozpoczyna odwołanie do zmiennej, natomiast backtick rozpoczyna sekwencję ucieczki. Klucz zawierający jedno z nich dociera krótszy lub z innym znakiem, a profil powstaje z błędnym sekretem.

Potem błąd ujawnia się przy uwierzytelnianiu IPsec, gdzie tunel odmawia podniesienia się. Dlatego błąd cudzysłowów tak często jest zgłaszany jako problem po stronie serwera: profil istnieje, nazwa jest poprawna, a sekret jest po cichu zły.

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

Cudzysłowy pojedyncze są rozwiązaniem i muszą obejmować całą wartość. Jeśli wpis już istnieje ze złym kluczem, -Force go zastępuje, albo usuń i utwórz profil ponownie, a następnie sprawdź nowym połączeniem:

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

Trzymaj prawdziwy sekret poza historią powłoki i współdzielonymi skryptami. Odczytuj go w czasie wykonania z zatwierdzonego magazynu i przekazuj zmienną zamiast literału, co całkowicie omija problem cudzysłowów.

Zmień adres, a potem połącz się ponownie

Set-VpnConnection przyjmuje parametry oddzielone spacjami, nie składnię przypisania. Zapis -ServerAddress = "203.0.113.10" przekazuje dodatkowy token, a polecenie cmdlet albo zgłasza błąd, albo zapisuje coś, czego nie zamierzałeś. Poprawna forma to -Name "Office L2TP" -ServerAddress 203.0.113.10.

Nawet przy poprawnej składni zmiana nie dociera do tunelu, który już działa. Ustanowione połączenie zachowuje adres, na który zadzwoniło, dopóki nie zostanie rozłączone, więc test tej samej sesji niczego nie dowodzi w kwestii nowej wartości. Rozłącz się, edytuj, połącz ponownie i potwierdź adres drugiej strony w szczegółach połączenia.

Niektórych właściwości nie można zmienić na miejscu. Gdy polecenie cmdlet odmawia, zapisz istniejące parametry, usuń profil i utwórz go ponownie z poprawionymi wartościami, i zachowaj pierwotne ustawienia tunelu oraz uwierzytelniania. Skrypt, który ma zmienić tylko numer telefonu, może edytować wpis w książce telefonicznej przez API RAS zamiast tworzyć wszystko od nowa. Którąkolwiek drogę wybierzesz, potem potwierdź zapisane wartości, a nie ufaj ciszy polecenia.

Wiedz, którą książkę telefoniczną edytowałeś

Profil jednego użytkownika mieszka w katalogu połączeń sieciowych tego użytkownika, a profil wszystkich użytkowników w katalogu obejmującym całą maszynę, pod drzewem danych programów. To różne wpisy o różnym zakresie, a edycja jednego pozostawia drugi nietknięty.

Dlatego zmiana może wyglądać na zaginioną: skrypt działał na jednym koncie, a test na innym. Użyj -AllUserConnection, gdy profil należy do maszyny, i sprawdź ten sam zakres, gdy go odczytujesz.

Odczytaj profil, zanim przetestujesz

Zapytaj Windows, co zapisał, a nie co przekazałeś:

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

Porównaj ten wynik z zamiarem, a potem rozpocznij nowe połączenie. Jeśli wybieranie numeru się nie uda, przed kolejną zmianą profilu sprawdź dziennik klienta RAS w Podglądzie zdarzeń, ponieważ dziennik wskazuje etap, który zawiódł.

Zachowaj nietknięty projekt uwierzytelniania podczas edycji. Polecenie, które zmienia adres, ale gubi certyfikat lub konfigurację EAP, daje błąd wyglądający na niezwiązany z edycją, a wcześniejszy eksport działającego profilu daje coś do przywrócenia zamiast domysłu.

Powiązane artykuły