Windows ne havas reprovizan regularon por sia VPN-kliento, do konekto, kiu falas noktomeze, ankoraŭ estas malsupra ĉe matenmanĝo. Planita tasko, kiu observas la malkonekton kaj rulas rasdial, fermas tiun breĉon sen triserva kliento. Ĉu la tasko kondutas kiel operatoro aŭ kiel buklo, dependas de tri detaloj: kiujn eventojn ĝi kongruas, kiun akreditilon ĝi povas vidi, kaj kion ĝi faras kun la rezulto. Neniu el la tri estas malfacila, kaj manki iun el ili estas tio, kio produktas taskon, kiu vokas por ĉiam.

Kial tempigilo estas la malĝusta ellasilo

Tempigilo vokas laŭ sia propra horaro sendepende de tio, ĉu la tunelo estas malsupra. Tio produktas provojn, kiujn neniu bezonis, kaj provo dum labora sesio povas interrompi ĝin. Eventa ellasilo ekagas nur kiam la konekto ŝanĝas staton, kio estas pli malmultekosta kaj pli facile pripensebla. La evento ankaŭ portas la kaŭzon, kaj la kaŭzo estas tio, kio apartigas retan fiaskon de persono, kiu malkonektas intence.

Tiu distingo estas la diferenco inter utila tasko kaj unu, kiu luktas kun la uzanto ĉiun vesperon. Ĝi ankaŭ estas la parto kutime mankanta en receptoj, kiuj priskribas nur la agon.

La eventa paro kaj la unu, kiun oni subpremu

La kliento de Remote Access Service skribas vivciklajn rikordojn al la protokolo Application sub la provizanto RasClient. 20226 markas konekton, kiu finiĝis, kaj 20227 markas provon, kiu fiaskis, do ambaŭ povas pravigi novan vokon. Ĉio alia en la tasko dependas de ekzakta kongruo de tiuj du identigiloj. Ili estis stabilaj dum jaroj, tial receptoj konstruitaj sur ili ankoraŭ cirkulas, sed konstruo, kiu renomas la provizanton aŭ la identigilojn, igas la serĉon redoni nenion. Ripetu la pruvan paŝon post ĉiu funkcia ĝisdatigo anstataŭ atendi, ke la tasko ĉesu ekagi.

Unu finiĝo devas esti ekskludita. Eraro 631 signifas, ke la uzanto malkonektis la pordon, kaj nova voko en tiu momento luktas kun la persono, kiu ĵus intence ŝanĝis reton. Metu la ekskludon en la ellasilan filtrilon anstataŭ en la skripton, por ke la tasko tute ne komenciĝu. Ĝi devas aplikiĝi nur al unu eventa identigilo, ĉar EventData-predikato kongruas nur kiam la nomita elemento ekzistas, kaj komuna klaŭzo silente forigus ĉiun eventon de la alia identigilo. Legu la elementan nomon el reala rikordo antaŭ ol skribi la filtrilon:

Get-WinEvent -LogName Application -MaxEvents 5 -FilterXPath "*[System[Provider[@Name='RasClient'] and EventID=20226]]" | Select-Object -First 1 -ExpandProperty ToXml

La XML montras la ekzaktajn Data-nomojn en tiu rikordo. ErrorCode estas la kutima literumo, kaj rikordo, kiu uzas ion alian, bezonas tiun nomon anstataŭigita en la filtrilo sube.

<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>

Algluu tion en la propran filtrilon de la ellasilo kaj pruvu ĝin kiel serĉon antaŭ ol ĝi fariĝos ellasilo. La sama XPath rulas el PowerShell kontraŭ la viva protokolo, kio estas la malmultekosta maniero vidi, kion ĝi kongruas dum taska historio ankoraŭ ne estas implikita.

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

Ellasilo, kiu silente kongruas nenion, aspektas ekzakte kiel tasko, kiu rulas kaj fiaskas. Ambaŭ prezentiĝas kiel „la aŭtomatigo ne funkcias“, kaj neniu diras, kiu duono mankas. Kontrolu unue la eligon de la serĉo, ĉar ĝi apartigas la du kazojn en unu paŝo.

La voko fiaskas, ĉar neniu estas tie por tajpi la pasvorton

La ago rulas rasdial kun la konekta nomo. Kiam la profilo ne havas kaŝmemorigitan akreditilon, la voko tuj fiaskas, ĉar neniu estas por respondi la inviton. Tio estas la plej ofta kialo, kial ĝuste ekagigita tasko faras nenion videblan, do kontrolu ĝin antaŭ ol tuŝi la ellasilon. Mana vokado el komanda invito apartigas akreditilan problemon de plana problemo.

Konservu la akreditilon unufoje sub la konto, kiel kiu la tasko rulos, kaj faru tiun konton parto de la dezajno. Tasko rulanta kiel SYSTEM ne povas legi akreditilon kaŝmemorigitan de via interaga konto, kaj nek tasko rulanta kiel iu alia. La nomo ankaŭ devas ekzakte kongrui kun la profilo, inkluzive de ajna domajna prefikso en la uzanta kampo.

rasdial
rasdial "Office VPN"
(Start-Process rasdial -ArgumentList '"Office VPN"' -Wait -PassThru -NoNewWindow).ExitCode

La unua komando listigas la nomojn, kiujn Windows konas. La dua vokas laŭ nomo per la kaŝmemorigita akreditilo, kaj la tria estas la formo, kiun PowerShell-ago uzu, ĉar ĝi atendas kaj redonas valoron, kiun la tasko povas registri.

Legu la eligan kodon anstataŭ la fenestron

Tasko, kiu startigas procezon sen atendi, raportas sukceson tuj kiam la proceso ekzistas. Por voko, kiu povas fiaski sekundon poste, tiu verdikto estas senvalora. Atendi la eligan kodon igas la agon reala rezulto. Taska historio sola montras nur, ke proceso startis, neniam ke tunelo leviĝis.

Registru la valoron kun tempindiko ĉe ĉiu rulado. Unuopa fiasko post interrompo estas normala, dum tri fiaskoj sinsekve kun la sama kodo indikas la akreditilon aŭ la profilon, ne la reton. Tiu ŝablono estas tio, kio igas la historion leginda.

Aldonu mallongan ripetan intervalon kiel asekuron kaj estu eksplicita pri tio, kiel ĝi interagas kun eventa ellasilo. Ripeto ĉiun minuton dum kvin minutoj havigas la duan provon, kiam la interreto revenis kune kun la tunelo, kaj sub Agordoj, „Se la tasko jam ruliĝas, validas la jena regulo“, la tasko volas „Ne startigu novan instalon“, por ke ripeto ne koincidu kun voko ankoraŭ en progreso. Sen tiu agordo du rasdial-procesoj povas konkurso pro la sama pordo kaj la dua fiaskas sen utila kialo.

Pruvu la resanigan vojon

Testu ambaŭ direktojn intence. Malkonektu mane kaj konfirmu, ke neniu nova voko okazas, poste malŝaltu la retan adaptilon kaj konfirmu, ke la tasko ekagas kiam la ligilo revenas. Tiuj du testoj kovras la subpreman regulon kaj la realan fiaskan kazon, kaj nenio alia faras tion.

Poste legu la taskan historion anstataŭ la konektan ikonon. La historio registras, kiam la tasko rulis, kiun konton ĝi uzis kaj kion la ago redonis, kaj tio estas la pruvo bezonata, kiam la sama maŝino denove falos venontmonate.

Rilataj artikoloj