Um rasphone.pbk copiado apagou as outras VPN de todo o sistema
Substituir a lista telefónica global para entregar uma única VPN apaga todas as outras ligações que contém. Tenha um perfil com nome, pré-visualize-o e depois prove que as restantes sobrevivem.
A nova VPN apareceu, a autenticação funcionou, e uma VPN de terceiros que vivia na máquina há dois anos desapareceu no mesmo reinício. Nada no registo da implementação o mencionou, porque nada na implementação se ocupava disso. O pacote tinha substituído a lista telefónica global, e a outra ligação era uma entrada desse ficheiro. Isto é uma operação de cópia a comportar-se exatamente como uma operação de cópia deve comportar-se.
A correção não é uma cópia melhor. É não copiar o ficheiro.
O que a lista telefónica contém realmente
Uma lista telefónica é um contentor de definições de ligação, não um perfil. As entradas por utilizador vivem no perfil do utilizador, e as entradas para todos os utilizadores vivem no caminho ProgramData de âmbito de máquina, por isso uma implementação que escreve esse ficheiro toca todos os utilizadores locais de uma vez. O mesmo ficheiro também contém entradas criadas por outros fornecedores, e é daí que vem o dano colateral.
Uma definição de ligação também não é a história toda. As rotas, a política de DNS, o material de CA fidedigno e a identidade são fornecidos por proprietários separados.
Descubra que âmbito é dono do perfil
Enumere ambos os âmbitos antes de escrever seja o que for. Get-VpnConnection devolve as entradas do utilizador atual e Get-VpnConnection -AllUserConnection devolve as de âmbito de máquina, e o mesmo nome pode existir nos dois com definições diferentes. Decida que âmbito a sua implementação detém e registe-o, porque atualizar o âmbito errado deixa o utilizador a ligar-se pelo perfil antigo enquanto a sua alteração fica num ficheiro que ninguém lê. Uma tarefa agendada a correr como SYSTEM também vê um conjunto de perfis diferente do utilizador com sessão iniciada.
Dar nome ao proprietário é o passo que impede o próximo engenheiro de repetir a cópia do ficheiro inteiro.
Crie ou atualize a ligação com nome, nada mais
Para um perfil nativo do Windows, Add-VpnConnection cria uma entrada, e -AllUserConnection escolhe o âmbito de máquina. Execute-o primeiro com -WhatIf, para que a pré-visualização fique na sua transcrição e não numa queixa do utilizador:
Add-VpnConnection -Name 'Office VPN' -ServerAddress 'vpn.example.com' -TunnelType Ikev2 -AuthenticationMethod Eap -EapConfigXmlStream $approvedEapXml -AllUserConnection -WhatIfO XML de EAP tem de vir de algum sítio legítimo: exportado de um perfil de referência que funcione, ou gerado pelas suas ferramentas de gestão para a gateway real. Sem as definições corretas de confiança do servidor, o perfil ou se liga à coisa errada ou falha em todo o lado, e nenhuma das duas é uma implementação bem-sucedida.
Quando a entrada já existe, compare as definições e atualize-a com Set-VpnConnection em vez de a apagar e recriar. Apagar é a forma como uma configuração que funciona perde campos que ninguém documentou, e como entradas não relacionadas ficam presas numa limpeza ampla.
Verifique se existe um segundo sistema de gestão que reponha o perfil antigo no próximo refrescamento de política. Os pilotos falham aqui mais vezes do que no cmdlet.
Faça o piloto numa máquina que já tenha outra VPN
Escolha uma máquina de teste com uma entrada não relacionada de âmbito de máquina, implemente, e depois verifique três coisas: o novo perfil aparece no âmbito pretendido, a autenticação chega a um recurso privado, e a entrada não relacionada continua a ligar. Implemente mais duas vezes e confirme que a segunda execução só altera o perfil que detém. Essa terceira verificação apanha um pacote que é idempotente para a sua própria entrada e destrutivo para todo o resto.
A remoção segue a mesma regra: Remove-VpnConnection -Name 'Office VPN' -AllUserConnection retira uma entrada e deixa o resto do ficheiro em paz.
Mantenha disponível a configuração pretendida anterior, para que um retrocesso limitado signifique reimportar um perfil em vez de restaurar todo o estado da máquina.