Профилът на VPN в Windows е запис в телефонен указател, а PowerShell е един от начините да редактирате този запис. От това разграничение следват два отказа: предварително споделен ключ, който пристига на сървъра вече повреден, и адрес на сървър, който изглежда обновен, но не е този, към който ще се обади следващият тунел. И двете се виждат по-лесно, когато третирате профила като запазено състояние, а не като команда, която сте изпълнили. Прегледът следва реда, в който стават промените: създаване, промяна, обхват, обратно четене.

Създайте профила с буквален ключ

Add-VpnConnection приема предварително споделения ключ за L2TP чрез -L2tpPsk. PowerShell обработва низа, преди cmdlet-ът да го получи, а в двойни кавички знакът за долар започва препратка към променлива, докато backtick започва escape. Ключ, който съдържа някое от двете, пристига по-къс или с друг знак, и профилът се създава успешно с грешна тайна.

След това отказът се появява при IPsec удостоверяване, където тунелът отказва да се вдигне. Затова грешка в кавичките толкова често се докладва като проблем от страна на сървъра: профилът съществува, името е правилно, а тайната тихо е грешна.

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

Единичните кавички са решението и трябва да обграждат цялата стойност. Ако записът вече съществува с лош ключ, -Force го заменя, или премахнете и създайте профила наново, после тествайте с нова връзка:

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

Дръжте истинската тайна извън историята на шела и споделените скриптове. Четете я по време на изпълнение от одобреното хранилище и подавайте променливата вместо буквалната стойност, което напълно избягва проблема с кавичките.

Променете адреса, после се свържете отново

Set-VpnConnection приема параметри, разделени с интервали, а не синтаксис за присвояване. Записът -ServerAddress = "203.0.113.10" подава допълнителен токен и cmdlet-ът или дава грешка, или запазва нещо, което не сте имали предвид. Правилната форма е -Name "Office L2TP" -ServerAddress 203.0.113.10.

Дори с правилен синтаксис промяната не достига до вече вдигнат тунел. Установената връзка пази адреса, към който се е обадила, докато не се разкачи, така че тестването на същата сесия не доказва нищо за новата стойност. Разкачете, редактирайте, свържете отново и потвърдете адреса на партньора в подробностите на връзката.

Някои свойства не могат да се променят на място. Когато cmdlet-ът откаже, запишете съществуващите параметри, изтрийте профила и го създайте отново с коригираните стойности, и запазете оригиналните настройки на тунела и удостоверяването. Скрипт, който трябва да смени само телефонния номер, може да редактира записа в указателя през RAS API, вместо да пресъздава всичко. Който и път да изберете, потвърдете запазените стойности след това, вместо да вярвате на мълчанието на командата.

Знайте кой указател сте редактирали

Профилът за отделен потребител живее в папката с мрежови връзки на този потребител, а профилът за всички потребители в общомашинната папка под дървото с програмни данни. Това са различни записи с различен обхват и редактирането на единия оставя другия непокътнат.

Затова промяната може да изглежда изчезнала: скриптът е работил с един акаунт, а тестът с друг. Използвайте -AllUserConnection, когато профилът принадлежи на машината, и проверявайте същия обхват, когато го четете обратно.

Прочетете профила обратно, преди да тествате

Питайте Windows какво е запазил, а не какво сте подали:

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

Сравнете този изход с намерението, после стартирайте нова връзка. Ако набирането се провали, преди да променяте профила отново, проверете журнала на RAS клиента в Event Viewer, защото журналът посочва етапа, който се е провалил.

Пазете дизайна на удостоверяването непокътнат, докато редактирате. Команда, която сменя адреса, но изпуска сертификата или EAP конфигурацията, дава отказ, който изглежда несвързан с редакцията, а експортирането на работещия профил предварително ви дава какво да възстановите вместо догадка.

Подобни статии