Add-VpnConnection: mengapa PSK rosak dan mengapa alamat kekal lama
PowerShell mengembangkan kunci pra-kongsi dalam tanda petikan berganda sebelum cmdlet menyimpannya, dan terowong yang berjalan mengekalkan alamat lama sehingga anda menyambung semula.
Profil VPN Windows ialah entri dalam buku telefon, dan PowerShell ialah satu cara untuk menyunting entri itu. Daripada perbezaan itu timbul dua kegagalan: kunci pra-kongsi yang tiba di pelayan sudah rosak, dan alamat pelayan yang kelihatan dikemas kini tetapi bukan yang akan didail oleh terowong seterusnya. Kedua-duanya lebih mudah dilihat jika anda menganggap profil sebagai keadaan tersimpan, bukan sebagai arahan yang anda jalankan. Penjelasan mengikut urutan suntingan: cipta, ubah, skop, baca semula.
Bina profil dengan kunci literal
Add-VpnConnection menerima kunci L2TP pra-kongsi melalui -L2tpPsk. PowerShell memproses rentetan itu sebelum cmdlet menerimanya, dan dalam tanda petikan berganda tanda dolar memulakan rujukan pemboleh ubah manakala backtick memulakan escape. Kunci yang mengandungi salah satu daripadanya tiba lebih pendek, atau dengan aksara berbeza, dan profil tetap berjaya dicipta dengan rahsia yang salah.
Kemudian kegagalan muncul pada pengesahan IPsec, tempat terowong enggan naik. Itulah sebabnya kesilapan tanda petikan sering dilaporkan sebagai masalah di pihak pelayan: profil wujud, nama betul, dan rahsia itu senyap-senyap salah.
| 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 |
Tanda petikan tunggal ialah penyelesaiannya, dan ia mesti mengelilingi seluruh nilai. Jika entri sudah wujud dengan kunci buruk, -Force menggantikannya, atau hapus dan cipta semula profil kemudian uji dengan sambungan baharu:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Jauhkan rahsia sebenar daripada sejarah shell dan skrip yang dikongsi. Bacanya semasa dijalankan daripada stor yang diluluskan dan hantar pemboleh ubah dan bukan literal, yang mengelakkan masalah tanda petikan sepenuhnya.
Tukar alamat, kemudian sambung semula
Set-VpnConnection menerima parameter yang dipisahkan ruang, bukan sintaks penetapan. Menulis -ServerAddress = "203.0.113.10" menghantar token tambahan, dan cmdlet sama ada gagal atau menyimpan sesuatu yang tidak anda maksudkan. Bentuk yang betul ialah -Name "Office L2TP" -ServerAddress 203.0.113.10.
Walaupun dengan sintaks yang betul, perubahan itu tidak sampai kepada terowong yang sudah naik. Sambungan yang telah terbentuk mengekalkan alamat yang didail sehingga ia diputuskan, jadi menguji sesi yang sama tidak membuktikan apa-apa tentang nilai baharu. Putuskan, sunting, sambung semula, dan sahkan alamat rakan dalam butiran sambungan.
Sesetengah sifat tidak boleh diubah di tempatnya. Apabila cmdlet menolak, catat parameter yang ada, hapus profil dan cipta semula dengan nilai yang dibetulkan, dan kekalkan tetapan terowong serta pengesahan asal. Skrip yang hanya perlu menukar nombor telefon boleh menyunting entri buku telefon melalui API RAS dan bukan mencipta semula segala-galanya. Apa pun laluan yang anda pilih, sahkan nilai tersimpan selepas itu dan jangan percaya pada senyapnya arahan.
Ketahui buku telefon mana yang anda sunting
Profil bagi setiap pengguna berada dalam direktori sambungan rangkaian pengguna itu, dan profil bagi semua pengguna berada dalam direktori seluruh mesin di bawah pokok data program. Ini entri berbeza dengan skop berbeza, dan menyunting yang satu membiarkan yang lain tidak tersentuh.
Itulah sebabnya perubahan boleh kelihatan hilang: skrip berjalan dengan satu akaun dan ujian dengan akaun lain. Gunakan -AllUserConnection apabila profil itu milik mesin, dan periksa skop yang sama apabila anda membacanya semula.
Baca semula profil sebelum menguji
Tanya Windows apa yang disimpannya, bukan apa yang anda hantar:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Bandingkan output itu dengan hasrat, kemudian mulakan sambungan baharu. Jika dail gagal, periksa log klien RAS dalam Event Viewer sebelum menukar profil lagi, kerana log menyebut peringkat yang gagal.
Kekalkan reka bentuk pengesahan utuh semasa menyunting. Arahan yang menukar alamat tetapi menggugurkan sijil atau konfigurasi EAP menghasilkan kegagalan yang kelihatan tidak berkaitan dengan suntingan, dan mengeksport profil yang berfungsi lebih awal memberi anda sesuatu untuk dipulihkan dan bukan tekaan.