Add-VpnConnection: por que a PSK se quebra e o endereço fica
O PowerShell expande uma chave pré-compartilhada entre aspas duplas antes de o cmdlet guardá-la, e um túnel em execução mantém o endereço antigo até você se reconectar.
Um perfil VPN do Windows é uma entrada de uma agenda de telefones, e o PowerShell é uma forma de editar essa entrada. Dessa distinção decorrem duas falhas: uma chave pré-compartilhada que chega ao servidor já corrompida e um endereço de servidor que parece atualizado mas não é o que o próximo túnel vai discar. Ambos são mais fáceis de ver se você tratar o perfil como estado guardado e não como um comando que executou. O percurso segue a ordem das edições: criar, alterar, âmbito, reler.
Crie o perfil com uma chave literal
Add-VpnConnection aceita a chave pré-compartilhada L2TP através de -L2tpPsk. O PowerShell processa a cadeia antes de o cmdlet a receber, e dentro de aspas duplas o sinal de dólar inicia uma referência a variável enquanto um backtick inicia uma sequência de escape. Uma chave que contenha qualquer um dos dois chega mais curta, ou com um caractere diferente, e o perfil é criado com sucesso com o segredo errado.
A falha aparece então na autenticação IPsec, onde o túnel se recusa a subir. É por isso que um erro de aspas é tantas vezes reportado como problema do lado do servidor: o perfil existe, o nome está certo e o segredo está silenciosamente errado.
| 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 |
As aspas simples são a solução, e têm de envolver todo o valor. Se a entrada já existir com uma chave má, -Force substitui-a, ou remova e recrie o perfil e depois teste com uma ligação nova:
Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force
Mantenha o segredo real fora do histórico da shell e dos scripts partilhados. Leia-o em tempo de execução do armazém aprovado e passe a variável em vez do literal, o que evita por completo o problema das aspas.
Altere o endereço e depois volte a ligar
Set-VpnConnection aceita parâmetros separados por espaços, não sintaxe de atribuição. Escrever -ServerAddress = "203.0.113.10" passa um token extra, e o cmdlet ou dá erro ou guarda algo que não pretendia. A forma correta é -Name "Office L2TP" -ServerAddress 203.0.113.10.
Mesmo com a sintaxe correta, a alteração não chega a um túnel já levantado. Uma ligação estabelecida mantém o endereço que discou até ser desligada, por isso testar a mesma sessão não prova nada sobre o valor novo. Desligue, edite, volte a ligar e confirme o endereço do par nos detalhes da ligação.
Algumas propriedades não podem ser alteradas no local. Quando o cmdlet recusa, anote os parâmetros existentes, elimine o perfil e recrie-o com os valores corrigidos, e mantenha as definições originais do túnel e da autenticação. Um script que só precisa de mudar o número de telefone pode editar a entrada da agenda através da API RAS em vez de recriar tudo. Qualquer que seja o caminho, confirme depois os valores guardados em vez de confiar no silêncio do comando.
Saber que agenda editou
Um perfil por utilizador vive na pasta de ligações de rede desse utilizador, e um perfil para todos os utilizadores vive na pasta de toda a máquina, sob a árvore de dados de programas. São entradas diferentes com âmbitos diferentes, e editar uma deixa a outra intacta.
É por isso que uma alteração pode parecer desaparecer: o script correu com uma conta e o teste com outra. Use -AllUserConnection quando o perfil pertence à máquina, e verifique o mesmo âmbito quando o relê.
Releia o perfil antes de testar
Pergunte ao Windows o que guardou em vez de o que passou:
Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod
Compare essa saída com a intenção e depois inicie uma ligação nova. Se a marcação falhar, verifique o registo do cliente RAS no Visualizador de Eventos antes de voltar a alterar o perfil, porque o registo indica a fase que falhou.
Mantenha o desenho da autenticação intacto enquanto edita. Um comando que muda o endereço mas deixa cair o certificado ou a configuração EAP produz uma falha que parece alheia à edição, e exportar o perfil que funciona antes dá-lhe algo para restaurar em vez de uma suposição.