Ein VPN-Verbindungsaufbau spielt Ihr Anmeldeskript nicht erneut ab
Anmeldeskripte laufen bei der Anmeldung, nicht wenn ein Tunnel erscheint. Trennen Sie Start, Anmeldung und Hintergrundaktualisierung, und lösen Sie die Arbeit dann an der Verbindung aus.
Ihr Benutzer meldet sich zu Hause an, verbindet das VPN und wartet auf die Laufwerkszuordnung, die im Büro früher von selbst erschien. Der Tunnel kommt hoch, die Domäne antwortet, und nichts wird zugeordnet. Nichts ist kaputt: Ein Anmeldeskript läuft bei der Anmeldung, und ein Tunnel, der zwanzig Minuten nach Sitzungsbeginn geöffnet wird, ist keine Anmeldung. Beides als dasselbe Ereignis zu lesen, schickt Leute auf die Suche nach einem VPN-Fehler, den es nicht gibt.
Vier Entscheidungen verwandeln die Überraschung in einen Ablauf, der sich richtig verhält, und die erste ist einfach zu wissen, auf welchen Ereignissen ein Skript reitet.
Skripte reiten auf Lebenszyklusereignissen, die Sie nicht wiederholen können
Richtlinien auf Computerseite werden beim Start der Maschine angewendet, Richtlinien auf Benutzerseite bei der Anmeldung, während eine Hintergrundaktualisierung dieselben Einstellungen durchläuft, ohne irgendetwas neu zu starten. Diese Aktualisierung verarbeitet die Skripterweiterung, führt aber die einzelnen Skripte nicht erneut aus, die nur bei Start, Herunterfahren, Anmeldung oder Abmeldung ausgelöst werden. Daher kann gpupdate /force Erfolg melden, während die Zuordnung noch fehlt, und eine saubere Aktualisierung ist kein Beleg dafür, dass das Skript etwas getan hat.
Die Microsoft-Referenz zur Richtlinienverarbeitung zieht genau diese Grenze zwischen der Verarbeitung der Erweiterung und der Ausführung ihres Inhalts, und das ist die Seite, die man zitiert, wenn jemand darauf beharrt, eine Aktualisierung hätte das Skript erneut abspielen müssen.
Nicht jedes Skript scheitert auch offline. Eines, das nur lokale oder zwischengespeicherte Inhalte liest, kann teilweise erfolgreich gewesen sein, während eines, das eine Freigabe berührt, still scheitert und keine offensichtliche Spur hinterlässt. Prüfen Sie den tatsächlichen Skriptpfad und was er erreicht, bevor Sie das Netzwerk beschuldigen. Dieselbe Prüfung gehört zu jeder Behauptung, ein Skript laufe nicht bei der Anmeldung, denn eine geplante Aufgabe oder eine Clientaktion könnte die Arbeit erledigen, wo niemand hinsieht.
Binden Sie die Arbeit an die Verbindung, nicht an die Anmeldung
Drei verschiedene Aufgaben verstecken sich hinter dem Begriff Anmeldeskript: ein Laufwerk zuordnen, nachdem der Benutzer sich verbindet, Maschinenkonfiguration anwenden, bevor sich jemand anmeldet, und aktualisierte Richtlinien abholen. Sie haben unterschiedliche Fristen, und nur die zweite braucht wirklich Konnektivität vor der Anmeldung. Schreiben Sie die Anforderung als Satz mit einer Frist, etwa: Diese Zuordnung muss innerhalb einer Minute nach dem Hochkommen des Tunnels bestehen.
Für Arbeit, die nach der Verbindung geschehen muss, verwenden Sie eine verbindungsausgelöste Aufgabe oder die Verbindungsaktion, die der Client unterstützt. Prüfen Sie, welches Ereignis der Client tatsächlich auslöst, denn ein Ereignis des nativen Windows-VPN-Clients wird von einem Drittanbieter-Client nicht ausgelöst. Für Maschinenkonfiguration, die der Anmeldung vorausgehen muss, ist die unterstützte Antwort ein Gerätetunnel oder ein anderes Design vor der Anmeldung, nicht eine Aufgabe, die ausgelöst wird, sobald der Desktop erscheint. Führen Sie die Arbeit in der Identität und Sitzung aus, die sie brauchen, denn eine als SYSTEM erstellte Zuordnung landet in einer Sitzung, die der Benutzer nie sieht.
Prüfen Sie die Bereitschaft, bevor Sie handeln, und scheitern Sie laut
Ein Verbindungsereignis kann eintreffen, bevor DNS oder der Dateiserver nutzbar sind, also sollte die Aufgabe prüfen, was sie braucht, statt es anzunehmen. Lösen Sie den konkreten Namen auf, versuchen Sie die konkrete Verbindung, und wiederholen Sie mit einer Grenze und einer Verzögerung: Resolve-DnsName files.corp.example in einer kurzen Schleife trennt noch-nicht von nie. Melden Sie nach dem letzten Versuch einen konkreten Fehler, mit dem Namen und dem Fehler darin.
Eine Endlosschleife ohne Protokoll ist von einer Aufgabe, die nie startete, nicht zu unterscheiden, und sie verbirgt den Unterschied zwischen einem veralteten Anmeldeinformationssatz und einer Firewallregel.
Prüfen Sie vier Dinge und machen Sie es dann wiederholbar
Zeichnen Sie im Pilotbetrieb vier Beobachtungen statt einer auf: Das Verbindungsereignis wurde ausgelöst, die Aufgabe startete, die Ressource antwortete, und die angeforderte Änderung wurde tatsächlich wirksam. Bleibt das Protokoll bei Aufgabe gestartet stehen, bleibt der echte Fehler unsichtbar, egal wie lange Sie warten. Führen Sie dann gpresult /scope user /v aus, um zu sehen, welche Richtlinie die Sitzung für ihre hält, und vergleichen Sie das mit der erwarteten Einstellung. Ein Bericht, der die GPO als angewendet auflistet, sagt noch nichts über eine Zuordnung.
Machen Sie die Arbeit sicher wiederholbar, bevor Sie sie ausweiten, denn der Client verbindet sich neu und die Aufgabe löst erneut aus. Prüfen Sie vor dem Erstellen, ob die Zuordnung oder Konfiguration bereits besteht, und notieren Sie, was Sie gefunden haben. Doppelte Arbeit nach jeder kurzen Wiederverbindung ist der Weg, auf dem eine hilfreiche Aufgabe zum Vorfall wird.
Wo ein automatischer Auslöser ungeeignet ist, ist eine genehmigte Benutzeraktion, die dasselbe signierte Skript ausführt, ein legitimes Design. Sie macht den Zeitpunkt ausdrücklich, statt vorzugeben, es sei ein Anmeldeereignis eingetreten.