Un profilo VPN di Windows è una voce di una rubrica telefonica, e PowerShell è un modo per modificare quella voce. Da questa distinzione derivano due guasti: una chiave precondivisa che arriva al server già corrotta e un indirizzo del server che sembra aggiornato ma non è quello che il tunnel successivo chiamerà. Entrambi si vedono più facilmente se tratti il profilo come stato memorizzato invece che come un comando che hai eseguito. Il percorso segue l'ordine in cui avvengono le modifiche: creare, cambiare, ambito, rileggere.

Crea il profilo con una chiave letterale

Add-VpnConnection accetta la chiave precondivisa L2TP tramite -L2tpPsk. PowerShell elabora la stringa prima che il cmdlet la riceva, e dentro le virgolette doppie il segno di dollaro avvia un riferimento a variabile mentre un backtick avvia una sequenza di escape. Una chiave che contiene uno dei due arriva più corta, o con un carattere diverso, e il profilo viene creato correttamente con il segreto sbagliato.

Poi il guasto compare nell'autenticazione IPsec, dove il tunnel rifiuta di salire. Per questo un errore di virgolette viene segnalato così spesso come problema lato server: il profilo esiste, il nome è corretto e il segreto è silenziosamente sbagliato.

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

Gli apici singoli sono la soluzione, e devono racchiudere tutto il valore. Se la voce esiste già con una chiave sbagliata, -Force la sostituisce, oppure rimuovi e ricrea il profilo e poi prova con una connessione nuova:

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

Tieni il segreto reale fuori dalla cronologia della shell e dagli script condivisi. Leggilo in fase di esecuzione dall'archivio approvato e passa la variabile invece del letterale, il che evita del tutto il problema delle virgolette.

Cambia l'indirizzo, poi riconnettiti

Set-VpnConnection accetta parametri separati da spazi, non sintassi di assegnazione. Scrivere -ServerAddress = "203.0.113.10" passa un token in più, e il cmdlet o restituisce un errore o memorizza qualcosa che non volevi. La forma corretta è -Name "Office L2TP" -ServerAddress 203.0.113.10.

Anche con la sintassi corretta, la modifica non raggiunge un tunnel già attivo. Una connessione stabilita mantiene l'indirizzo chiamato finché non viene disconnessa, quindi provare la stessa sessione non dimostra nulla sul nuovo valore. Disconnetti, modifica, riconnetti e verifica l'indirizzo del peer nei dettagli della connessione.

Alcune proprietà non si possono cambiare sul posto. Quando il cmdlet rifiuta, annota i parametri esistenti, elimina il profilo e ricrealo con i valori corretti, e conserva le impostazioni originali del tunnel e dell'autenticazione. Uno script che deve cambiare solo il numero di telefono può modificare la voce della rubrica tramite l'API RAS invece di ricreare tutto. Qualunque strada scegli, verifica poi i valori memorizzati invece di fidarti del silenzio del comando.

Sapere quale rubrica hai modificato

Un profilo per utente risiede nella cartella delle connessioni di rete di quell'utente, e un profilo per tutti gli utenti risiede nella cartella a livello di macchina sotto l'albero dei dati dei programmi. Sono voci diverse con ambiti diversi, e modificarne una lascia l'altra intatta.

Per questo una modifica può sembrare svanita: lo script è stato eseguito con un account e il test con un altro. Usa -AllUserConnection quando il profilo appartiene alla macchina, e controlla lo stesso ambito quando lo rileggi.

Rileggi il profilo prima di provare

Chiedi a Windows cosa ha memorizzato invece di cosa gli hai passato:

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

Confronta quell'output con l'intenzione, poi avvia una connessione nuova. Se la chiamata fallisce, controlla il registro del client RAS nel Visualizzatore eventi prima di cambiare di nuovo il profilo, perché il registro nomina la fase che ha fallito.

Mantieni intatto il progetto di autenticazione mentre modifichi. Un comando che cambia l'indirizzo ma tralascia il certificato o la configurazione EAP produce un guasto che sembra estraneo alla modifica, e esportare il profilo funzionante in anticipo ti dà qualcosa da ripristinare invece di una congettura.

Articoli correlati