Halt eng Windows-VPN um Lafen: zünd rasdial beim Trennungsevenement
RasClient 20226 an 20227 markéieren en Ofbroch; 631 heescht, datt eng Persoun en ausgeléist huet. Zünd rasdial bei den éischten zwee, späichert eng Umeldung an liest den Exitcode.
Windows bitt keng Widderwielpolitik fir säi VPN-Client un, dofir ass eng Verbindung, déi um Mëtternuecht fält, um Frühstück nach ëmmer erof. Eng geplangte Aufgab, déi den Ofbroch iwwerwaacht an rasdial ausféiert, schléisst déi Lück ouni en Drëttanbieter-Client. Ob d'Aufgab sech wéi en Operateur oder wéi eng Schlauf verhält, hänkt vun dräi Detailer of: wéi eng Evenementer se vergläicht, wéi eng Umeldungsdaten se gesäit a wat se mam Resultat mécht. Keng vun den dräi ass schwéier, a well een dovun feelt, entsteet eng Aufgab, déi ëmmer weider wielt.
Firwat en Timer de falschen Ausléiser ass
En Timer wielt no sengem eegene Plang, egal ob den Tunnel erof ass oder net. Dat mécht Versich, déi keen gebraucht huet, an e Versuch während enger Aarbechtssëtzung kann déi ënnerbriechen. En Evenement-Ausléiser zünd nëmme wann d'Verbindung hire Status ännert, wat méi bëlleg an einfacher ze iwwerleeën ass. D'Evenement dréit och de Grond, an de Grond ass dat, wat e Netzwierkfehler vun enger Persoun trennt, déi bewosst ofhänkt.
Dee Grond ass den Ënnerscheed tëscht enger nëtzlecher Aufgab an enger, déi all Owend mam Benotzer streit. Et ass och deen Deel, deen an de Rezepter meeschtens feelt, déi nëmmen d'Aktioun beschreiwen.
D'Evenementerpuer, an dat, wat ënnerdréckt muss ginn
De Client vum Remote Access Service schreift Liewenszyklus-Records an d'Application-Log ënner dem Provider RasClient. 20226 markéiert eng Verbindung, déi opgehalen huet, an 20227 markéiert e Versuch, deen feelgeschloen ass, dofir kann jiddereen vun deenen zwee en neie Wielt rechtfertegen. Alles anescht an der Aufgab hänkt dovun of, déi zwou Identifikatiounen exakt ze vergläichen. Si si joerelaang stabil, dofir zirkuléiere Rezepter, déi dorobber opgebaut sinn, nach ëmmer, awer e Build, deen de Provider oder d'IDs ëmbenennt, mécht datt d'Ufro näischt zréckgëtt. Fëllt de Beweisschrëtt no all Funktiounsupdate nach eng Kéier aus, amplaz ze waarden, bis d'Aufgab ophält ze zünden.
Een Ofschloss muss ausgeschloss ginn. De Fehler 631 bedeit, datt de Benotzer de Port ofgehänkt huet, an e Widderwiel an deem Moment streit mat der Persoun, déi just bewosst d'Netzwierk gewiesselt huet. Setzt den Ausschloss an de Filter vum Ausléiser an net an de Skript, sou datt d'Aufgab guer net ufänkt. En muss nëmmen op eng Evenement-ID zoutreffen, well e EventData-Prädikat nëmmen da vergläicht wann dat genannt Element existéiert, an eng gemeinsam Klausel géif jidde Evenement vun der anerer ID stëll verwerfen. Liest den Numm vum Element aus engem echte Record, ier Dir de Filter schreift:
Get-WinEvent -LogName Application -MaxEvents 5 -FilterXPath "*[System[Provider[@Name='RasClient'] and EventID=20226]]" | Select-Object -First 1 -ExpandProperty ToXml
D'XML weist déi exakt Data-Nimm an deem Record. ErrorCode ass déi üblech Schreifweis, an e Record, deen eppes anescht benotzt, brauch dësen Numm am Filter hei drënner ersat.
<QueryList><Query Id="0" Path="Application"><Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] and (EventData[Data[@Name='ErrorCode'] != '631'] or System[EventID=20227])</Select></Query></QueryList>
Pescht dat an de personaliséierte Filter vum Ausléiser, a beweist et als Ufro, ier et en Ausléiser gëtt. Dee selwechte XPath leeft vun PowerShell géint de liewegen Log, wat de bëllege Wee ass ze gesinn, mat wat en iwwereneest, wärend d'Aufgabenhistorie nach net involvéiert ass.
Get-WinEvent -LogName Application -MaxEvents 40 -FilterXPath "*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] and (EventData[Data[@Name='ErrorCode'] != '631'] or System[EventID=20227])" | Select-Object TimeCreated,Id,Message
En Ausléiser, deen stëll mat näischt iwwereneest, gesäit genau aus wéi eng Aufgab, déi leeft an feelgeet. Béid erschéngen als „d'Automatiséierung funktionéiert net“, an keen seet, wéi eng Hallschent feelt. Kontrolléiert als éischt d'Ausgab vun der Ufro, well se déi zwou Fäll an engem Schrëtt trennt.
D'Wielt feelgeet, well keen do ass fir d'Passwuert ze tippen
D'Aktioun féiert rasdial mam Numm vun der Verbindung aus. Wann de Profil keng gecacht Umeldungsdaten huet, feelgeet d'Wielt direkt, well keen do ass fir op d'Ufro ze äntweren. Dat ass dee meeschte Grond, firwat eng richteg ausgeléist Aufgab näischt Visuelles mécht, also kontrolléiert dat, ier Dir den Ausléiser beréiert. Mat der Hand vun enger Kommandozeil wielen trennt e Problem mat den Umeldungsdaten vun engem Plangsproblem.
Späichert d'Umeldungsdaten eng Kéier ënner dem Kont, ënner deem d'Aufgab leeft, a maacht dee Kont zum Deel vum Design. Eng Aufgab, déi als SYSTEM leeft, kann keng Umeldungsdaten liesen, déi vun Ärem interaktive Kont gecacht goufen, an eng Aufgab, déi als een aneren leeft, och net. Den Numm muss och exakt zum Profil passen, inklusiv all Domain-Präfix am Benotzerfeld.
rasdial
rasdial "Office VPN"
(Start-Process rasdial -ArgumentList '"Office VPN"' -Wait -PassThru -NoNewWindow).ExitCode
Déi éischt Kommando lëscht d'Nimm op, déi Windows kennt. Déi zweet wielt mam Numm an de gecachten Umeldungsdaten, an déi drëtt ass d'Form, déi eng PowerShell-Aktioun benotze soll, well se waart an e Wäert zréckgëtt, deen d'Aufgab festhalen kann.
Liest den Exitcode amplaz d'Fënster
Eng Aufgab, déi e Prozess ouni Waarden startet, mellt Succès soubal de Prozess existéiert. Fir eng Wielt, déi eng Sekonn méi spéit feelgoe kann, ass dat Urteel wäertlos. Op den Exitcode waarden mécht d'Aktioun zu engem richtege Resultat. D'Aufgabenhistorie eleng weist nëmmen, datt e Prozess gestart gouf, ni, datt en Tunnel erop komm ass.
Logt de Wäert mat engem Zäitstempel bei all Laf. Ee eenzelen Ausfall no enger Ënnerbriechung ass normal, wärend dräi Ausfäll hannereneen mam selwechte Code op d'Umeldungsdaten oder de Profil weisen an net op d'Netzwierk. Dee Muster mécht d'Historie iwwerhaapt liesenswäert.
Füügt en kuerzen Widderhuelungsintervall als Versécherung derbäi, a sidd explizit wéi en mat engem Evenement-Ausléiser interagéiert. Eng Widderhuelung all Minutt fir fënnef Minutten gëtt den zweete Versuch, wéi den Internet mam Tunnel zréckkomm ass, a bei Astellungen, „Wann d'Aufgab schonn leeft, gëllt déi folgend Regel“, wëll d'Aufgab „Keng nei Instanz starten“, sou datt eng Widderhuelung keng nach lafend Wielt iwwerdeckt. Ouni déi Astellung kënnen zwou rasdial-Prozesser ëm deeselwechte Port konkurréieren an déi zweet feelgeet ouni nëtzleche Grond.
Beweist de Wee vun der Erhuelung
Test béid Richtungen bewosst. Trennt mat der Hand of a bestätegt, datt keng Widderwielt geschitt, deaktivéiert dann den Netzwierkadapter a bestätegt, datt d'Aufgab zünd wann de Link zréckkënnt. Déi zwou Tester decken d'Ënnerdréckungsregel an de richtegen Ausfallfall of, an näischt anescht mécht dat.
Liest duerno d'Aufgabenhistorie amplaz d'Verbindungssymbol. D'Historie registréiert wéini d'Aufgab gelaf ass, wéi ee Kont se benotzt huet a wat d'Aktioun zréckginn huet, an dat ass de Beweis, deen néideg ass wann déiselwecht Maschinn den nächsten Mount erëm fält.