Att ansluta till VPN spelar inte upp ditt inloggningsskript igen
Inloggningsskript körs vid inloggning, inte när en tunnel dyker upp. Separera start, inloggning och bakgrundsuppdatering, och utlös sedan arbetet på anslutningen.
Din användare loggar in hemma, ansluter till VPN och väntar på enhetsmappningen som förut dök upp av sig själv på kontoret. Tunneln kommer upp, domänen svarar och ingenting mappas. Ingenting är trasigt: ett inloggningsskript körs vid inloggning, och en tunnel som öppnas tjugo minuter in i sessionen är inte en inloggning. Att läsa de två som samma händelse skickar folk att leta efter ett VPN-fel som inte finns.
Fyra beslut förvandlar överraskningen till ett arbetsflöde som uppför sig, och det första är helt enkelt att veta vilka händelser ett skript rider på.
Skript rider på livscykelhändelser som du inte kan spela upp igen
Princip på datorsidan tillämpas när datorn startar och princip på användarsidan när någon loggar in, medan en bakgrundsuppdatering går igenom samma inställningar utan att starta om något. Den uppdateringen bearbetar skripttillägget, men kör inte om de enskilda skripten, som bara utlöses vid start, avstängning, inloggning eller utloggning. Därför kan gpupdate /force rapportera framgång medan mappningen fortfarande saknas, och en ren uppdatering är inget bevis för att skriptet gjorde något.
Microsofts referens om principbearbetning drar exakt den gränsen mellan att bearbeta tillägget och att köra det det innehåller, och det är sidan man citerar när någon insisterar på att en uppdatering borde ha spelat upp skriptet igen.
Inte varje skript misslyckas offline heller. Ett som bara läser lokalt eller cachelagrat material kan ha lyckats delvis, medan ett som rör en delning misslyckas tyst och lämnar inget tydligt spår. Kontrollera skriptets faktiska sökväg och vad det når innan du skyller på nätverket. Samma granskning hör till varje påstående att ett skript inte körs vid inloggning, eftersom en schemalagd uppgift eller en klientåtgärd kan göra arbetet där ingen tittar.
Knyt arbetet till anslutningen, inte till inloggningen
Tre olika jobb gömmer sig bakom uttrycket inloggningsskript: att mappa en enhet efter att användaren ansluter, att tillämpa datorns konfiguration innan någon loggar in, och att hämta uppdaterad princip. De har olika tidsfrister, och bara det andra behöver verkligen anslutning före inloggning. Skriv kravet som en mening med en tidsfrist, till exempel: denna mappning måste finnas inom en minut efter att tunneln kommit upp.
För arbete som måste ske efter anslutningen, använd en uppgift som utlöses av anslutningen eller den anslutningsåtgärd som klienten stöder. Kontrollera vilken händelse klienten faktiskt sänder, eftersom en händelse som den inbyggda Windows VPN-klienten reser inte reses av en tredjepartsklient. För datorkonfiguration som måste föregå inloggning är det stödda svaret en enhetstunnel eller en annan lösning före inloggning, inte en uppgift som utlöses när skrivbordet dyker upp. Kör arbetet i den identitet och session som behöver det, eftersom en mappning skapad som SYSTEM hamnar i en session som användaren aldrig ser.
Testa beredskapen innan du agerar, och misslyckas högljutt
En anslutningshändelse kan komma innan DNS eller filservern är användbar, så uppgiften bör testa det den behöver i stället för att anta. Slå upp det specifika namnet, försök med den specifika anslutningen och försök igen med en gräns och en fördröjning: Resolve-DnsName files.corp.example i en kort loop skiljer ännu-inte från aldrig. Rapportera ett konkret fel efter det sista försöket, med namnet och felet i.
En oändlig loop utan logg går inte att skilja från en uppgift som aldrig startade, och den döljer skillnaden mellan en inaktuell autentiseringsuppgift och en brandväggsregel.
Verifiera fyra saker och gör det sedan upprepbart
Under piloten, registrera fyra observationer i stället för en: anslutningshändelsen utlöstes, uppgiften startade, resursen svarade och den begärda ändringen genomfördes faktiskt. Om loggen stannar vid uppgift startad förblir det verkliga felet osynligt hur länge du än väntar. Kör sedan gpresult /scope user /v för att se vilken princip sessionen tror sig ha, och jämför med den inställning du förväntade dig. En rapport som listar GPO:n som tillämpad säger fortfarande ingenting om en mappning.
Gör arbetet säkert att upprepa innan du utökar det, eftersom klienten återansluter och uppgiften utlöses igen. Kontrollera om mappningen eller konfigurationen redan finns innan du skapar den, och anteckna vad du hittade. Dubbelarbete efter varje kortvarig återanslutning är hur en hjälpsam uppgift blir en incident.
Där en automatisk utlösare är olämplig är en godkänd användaråtgärd som kör samma signerade skript en legitim design. Den gör tidpunkten explicit i stället för att låtsas att en inloggningshändelse ägt rum.