Det nya VPN:et dök upp, autentiseringen fungerade, och ett tredjeparts-VPN som hade bott på maskinen i två år försvann i samma omstart. Inget i distributionsloggen nämnde det, eftersom inget i distributionen tog sig an det. Paketet hade ersatt den globala telefonboken, och den andra anslutningen var en post i den filen. Det här är en kopieringsoperation som beter sig precis som en kopieringsoperation ska bete sig.

Åtgärden är inte en bättre kopia. Den är att inte kopiera filen.

Vad telefonboken faktiskt innehåller

En telefonbok är en behållare för anslutningsdefinitioner, inte en profil. Poster per användare ligger under användarprofilen, och poster för alla användare ligger under den maskinomfattande ProgramData-sökvägen, därför träffar en distribution som skriver den filen varje lokal användare på en gång. Samma fil bär också poster som andra leverantörer skapat, och det är därifrån följdskadorna kommer.

Inte heller en anslutningsdefinition är hela historien. Rutter, DNS-princip, betrott CA-material och identitet tillhandahålls av separata ägare.

Ta reda på vilket omfång som äger profilen

Lista båda omfången innan du skriver något. Get-VpnConnection returnerar den aktuella användarens poster och Get-VpnConnection -AllUserConnection returnerar dem på maskinnivå, och samma namn kan finnas i båda med olika inställningar. Bestäm vilket omfång din distribution äger och skriv ned det, för att uppdatera fel omfång lämnar användaren att ansluta via den gamla profilen medan din ändring sitter i en fil som ingen läser. En schemalagd uppgift som körs som SYSTEM ser också en annan uppsättning profiler än den inloggade användaren.

Att namnge ägaren är steget som hindrar nästa ingenjör från att upprepa kopieringen av hela filen.

Skapa eller uppdatera den namngivna anslutningen, inget annat

För en inbyggd Windows-profil skapar Add-VpnConnection en post, och -AllUserConnection väljer det maskinomfattande omfånget. Kör den först med -WhatIf, så att förhandsgranskningen hamnar i din transkription och inte i ett användarklagomål:

Add-VpnConnection -Name 'Office VPN' -ServerAddress 'vpn.example.com' -TunnelType Ikev2 -AuthenticationMethod Eap -EapConfigXmlStream $approvedEapXml -AllUserConnection -WhatIf

EAP XML måste komma från något legitimt ställe: exporterat från en fungerande referensprofil, eller genererat av dina administrationsverktyg för den faktiska gatewayen. Utan korrekta inställningar för serverförtroende ansluter profilen antingen till fel sak eller misslyckas överallt, och inget av dem är en lyckad distribution.

När posten redan finns, jämför dess inställningar och uppdatera den med Set-VpnConnection i stället för att radera och återskapa den. Radering är hur en fungerande konfiguration tappar fält som ingen dokumenterat, och hur orelaterade poster fastnar i en bred städning.

Kontrollera om det finns ett andra hanteringssystem som sätter tillbaka den gamla profilen vid nästa principuppdatering. Piloter misslyckas här oftare än vid själva cmdleten.

Pilota på en maskin som redan har ett annat VPN

Välj en testmaskin med en orelaterad post på maskinnivå, distribuera, och verifiera sedan tre saker: den nya profilen dyker upp i det avsedda omfånget, autentiseringen når en privat resurs, och den orelaterade posten ansluter fortfarande. Distribuera två gånger till och bekräfta att den andra körningen bara ändrar profilen den äger. Den tredje kontrollen fångar ett paket som är idempotent för sin egen post och förödande för allt annat.

Borttagning följer samma regel: Remove-VpnConnection -Name 'Office VPN' -AllUserConnection pensionerar en post och lämnar resten av filen i fred.

Håll den tidigare avsedda konfigurationen tillgänglig, så att en avgränsad återställning innebär att importera en profil igen i stället för att återställa ett helt maskintillstånd.

Relaterade artiklar