Hâld in Windows-VPN oan: fjurje rasdial by it ferbrekkingsbarren
RasClient 20226 en 20227 markearje in delgong; 631 betsjut dat in persoan it dien hat. Fjurje rasdial by de earste twa, bewarje ien oanmeldgegevens, en lês de útgongskoat.
Windows leveret gjin weropbelbelied foar syn VPN-klant, dus in ferbining dy't om middernacht falt, is by it moarnsiten noch hieltyd del. In plande taak dy't de ferbrekking besjocht en rasdial útfiert, slút dy gat sûnder in tredde-partij-klant. Oft de taak him as in operator of as in lus hâldt, komt del op trije details: hokker barrennen it oerienkomt, hokker oanmeldgegevens it sjen kin, en wat it mei it resultaat docht. Net ien fan de trije is dreech, en it missen fan ien fan harren is wat in taak makket dy't ivich kiest.
Wêrom't in timer de ferkearde trigger is
In timer kiest neffens syn eigen skema, oft de tunnel no del is of net. Dat makket besykjen dy't nimmen nedich hie, en in besykjen ûnder in wurksesje kin it ûnderbrekke. In barrenstrigger fjurret allinnich as de ferbining fan steat feroaret, wat goedkeaper en makliker is om oer te riddenearjen. It barren draacht ek de reden, en de reden is wat in netwurkflater skiedt fan in persoan dy't mei opsetsin ôfslút.
Dat ûnderskied is it ferskil tusken in nuttige taak en ien dy't elke jûn mei de brûker fjochtet. It is ek it diel dat meastentiids mist yn resepten dy't allinnich de aksje beskriuwe.
It barrenpear, en dejinge dy't ûnderdrukt wurde moat
De klant fan Remote Access Service skriuwt libbenssyklusrecords yn it Application-log ûnder de oanbieder RasClient. 20226 markearret in ferbining dy't einige, en 20227 markearret in besykjen dat mislearre, dus elk fan beide kin in nije kies rjochtfeardigje. Al it oare yn 'e taak hinget ôf fan it krekt oerienkomme fan dy twa identifiers. Se binne jierren stabyl, dêrom sirkulearje resepten dy't dêrop boud binne noch altyd, mar in bou dy't de oanbieder of de id's omneamt, makket dat de query neat weromjout. Rinn de bewiisstap opnij nei elke funksjefernijing yn stee fan te wachtsjen oant de taak ophâldt mei fjurjen.
Ien ein moat útsletten wurde. Flater 631 betsjut dat de brûker de poarte ferbrutsen hat, en in nije kies op dat stuit fjochtet mei de persoan dy't krekt mei opsetsin fan netwurk wiksele is. Set de útsluting yn it filter fan de trigger yn stee fan yn it skript, sadat de taak hielendal net begjint. It moat allinnich jilde foar ien barren-id, want in EventData-predikaat komt allinnich oerien as it neamde elemint bestiet, en in dielde klausule soe stilwei elk barren fan it oare id weilitte. Lês de elemintnamme út in echt record foardat jo it filter skriuwe:
Get-WinEvent -LogName Application -MaxEvents 5 -FilterXPath "*[System[Provider[@Name='RasClient'] and EventID=20226]]" | Select-Object -First 1 -ExpandProperty ToXml
De XML toant de krekte Data-nammen yn dat record. ErrorCode is de gewoane stavering, en in record dat eat oars brûkt, hat ferlet fan dy namme ferfongen yn it filter hjirûnder.
<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>
Plak dat yn it oanpaste filter fan de trigger, en bewiis it as in query foardat it in trigger wurdt. Deselde XPath rint fan PowerShell ôf tsjin it libbene log, wat de goedkeape manier is om te sjen wêr't it oerienkomt wylst taakskiednis noch net belutsen is.
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
In trigger dy't stilwei nergens oerienkomt, sjocht der krekt út as in taak dy't rint en mislearret. Beide komme foar as "de automatisearring wurket net", en net ien seit hokker helte mist. Kontrolearje earst de útfier fan de query, want dat skiedt de beide gefallen yn ien stap.
De kies mislearret omdat nimmen der is om it wachtwurd te typen
De aksje rint rasdial mei de ferbiningsnamme. As it profyl gjin bewarre oanmeldgegevens hat, mislearret de kies daliks omdat nimmen it fraachprompt beantwurdzje kin. Dat is de meast foarkommende reden dat in goed triggere taak neat sichtbers docht, dus kontrolearje dat foardat jo de trigger oanreitsje. Mei de hân kies fan in opdrachtprompt skiedt in probleem mei oanmeldgegevens fan in planningsprobleem.
Bewarje de oanmeldgegevens ien kear ûnder it akkount dêr't de taak ûnder rinne sil, en meitsje dat akkount diel fan it ûntwerp. In taak dy't as SYSTEM rint, kin gjin oanmeldgegevens lêze dy't troch jo ynteraktive akkount bewarre binne, en in taak dy't as immen oars rint ek net. De namme moat ek krekt oerienkomme mei it profyl, ynklusyf elke domeinprefix yn it brûkersfjild.
rasdial
rasdial "Office VPN"
(Start-Process rasdial -ArgumentList '"Office VPN"' -Wait -PassThru -NoNewWindow).ExitCode
It earste opdracht listet de nammen op dy't Windows ken. It twadde kiest op namme mei de bewarre oanmeldgegevens, en it tredde is de foarm dy't in PowerShell-aksje brûke moat, want it wachtet en jout in wearde werom dy't de taak fêstlizze kin.
Lês de útgongskoat yn stee fan it finster
In taak dy't in proses start sûnder te wachtsjen, rapportearret súkses sa gau't it proses bestiet. Foar in kies dy't in sekonde letter mislearje kin, is dat oardiel weardeleas. Wachtsje op de útgongskoat makket de aksje in echt resultaat. Taakskiednis allinnich toant allinnich dat in proses begûn, nea dat in tunnel omheech kaam.
Log de wearde mei in tiidstimpel by elke run. Ien mislearring nei in ûnderbrekking is normaal, wylst trije mislearrings op rige mei deselde koade op de oanmeldgegevens of it profyl wize yn stee fan op it netwurk. Dat patroan is wat de skiednis it lêzen wurdich makket.
Foegje in koart werhellingsinterval ta as fersekering, en wês eksplisyt oer hoe't it mei in barrenstrigger omgiet. In werhelling elke minút fiif minuten lang leveret it twadde besykjen as it ynternet weromkaam mei de tunnel, en ûnder Ynstellings, "As de taak al rint, jildt de folgjende regel", wol de taak "Gjin nije eksimplaar starte", sadat in werhelling net oerlapet mei in kies dy't noch dwaande is. Sûnder dy ynstelling kinne twa rasdial-prosessen om deselde poarte stride en de twadde mislearret sûnder nuttige reden.
Bewiis it herstelpaad
Test beide rjochtingen mei opsetsin. Ferbrek mei de hân en befêstigje dat gjin nije kies bart, skeakelje dan de netwurkadapter út en befêstigje dat de taak fjurret as de keppeling weromkomt. Dy twa testen dekke de ûnderdrukkingsregel en it echte flatergeval, en neat oars docht dat.
Lês dêrnei de taakskiednis yn stee fan it ferbiningsikoan. De skiednis registrearret wannear't de taak rûn, hokker akkount it brûkte en wat de aksje weromjoech, en dat is it bewiis dat nedich is as deselde masine folgjende moanne wer falt.