Nid yw Windows yn cynnig unrhyw bolisi ail-alw ar gyfer ei gleient VPN, felly mae cysylltiad sy’n disgyn am hanner nos yn dal i fod i lawr amser brecwast. Mae tasg wedi’i threfnu sy’n gwylio’r datgysylltiad ac yn rhedeg rasdial yn cau’r bwlch hwnnw heb gleient trydydd parti. A yw’r dasg yn ymddwyn fel gweithredwr neu fel dolen, mae’n dod i lawr i dri manylyn: pa ddigwyddiadau y mae’n eu paru, pa dystlythyr y gall ei weld, a beth y mae’n ei wneud â’r canlyniad. Nid oes yr un o’r tri yn anodd, a hepgor unrhyw un ohonynt sy’n cynhyrchu tasg sy’n alw am byth.

Pam mae amserydd yn ysgogydd anghywir

Mae amserydd yn alw yn ôl ei amserlen ei hun p’un a yw’r twnnel i lawr ai peidio. Mae hynny’n cynhyrchu ymdrechion nad oedd neb eu hangen, a gall ymdrech yn ystod sesiwn waith ei thorri. Mae ysgogydd digwyddiad yn tanio dim ond pan fydd y cysylltiad yn newid cyflwr, sy’n rhatach ac yn haws i resymu yn ei gylch. Mae’r digwyddiad hefyd yn cario’r rheswm, a’r rheswm yw’r hyn sy’n gwahanu methiant rhwydwaith oddi wrth berson sy’n datgysylltu’n fwriadol.

Y gwahaniaeth hwnnw yw’r gwahaniaeth rhwng tasg ddefnyddiol a thasg sy’n ymladd â’r defnyddiwr bob nos. Dyma hefyd y rhan sydd fel arfer ar goll mewn rysetiau sy’n disgrifio’r weithred yn unig.

Y pâr o ddigwyddiadau, a’r un i’w atal

Mae cleient y Gwasanaeth Mynediad Pell yn ysgrifennu cofnodion cylch bywyd i’r log Application o dan y darparwr RasClient. Mae 20226 yn nodi cysylltiad a ddaeth i ben, ac mae 20227 yn nodi ymdrech a fethodd, felly gall y naill neu’r llall gyfiawnhau galwad newydd. Mae popeth arall yn y dasg yn dibynnu ar baru’r ddau ddynodwr hynny’n union. Maent wedi bod yn sefydlog ers blynyddoedd, a dyna pam mae rysetiau wedi’u hadeiladu arnynt yn dal i gylchredeg, ond mae adeiladwaith sy’n ailenwi’r darparwr neu’r dynodwyr yn gwneud i’r ymholiad beidio â dychwelyd dim. Ail-redeg y cam prawf ar ôl pob diweddariad nodwedd yn hytrach na disgwyl i’r dasg roi’r gorau i danio.

Mae angen eithrio un terfyniad. Mae gwall 631 yn golygu bod y porthladd wedi’i ddatgysylltu gan y defnyddiwr, ac mae ail-alw ar y funud honno’n ymladd â’r person sydd newydd newid rhwydwaith yn fwriadol. Rhowch yr eithriad yn nrws hidlo’r ysgogydd yn hytrach nag yn y sgript, fel nad yw’r dasg yn cychwyn o gwbl. Rhaid iddo fod yn berthnasol i un dynodwr digwyddiad yn unig, oherwydd dim ond pan fydd yr elfen a enwir yn bodoli y mae rhagfynegiad EventData yn cyfateb, a byddai cymal a rennir yn gollwng pob digwyddiad o’r dynodwr arall yn dawel. Darllenwch enw’r elfen o gofnod go iawn cyn ysgrifennu’r hidlydd:

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

Mae’r XML yn dangos yr union enwau Data yn y cofnod hwnnw. ErrorCode yw’r sillafiad arferol, ac mae cofnod sy’n defnyddio rhywbeth arall angen i’r enw hwnnw gael ei amnewid yn yr hidlydd isod.

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

Gludwch hynny i hidlydd cyfaddas yr ysgogydd, a’i brofi fel ymholiad cyn iddo ddod yn ysgogydd. Mae’r un XPath yn rhedeg o PowerShell yn erbyn y log byw, sef y ffordd rad o weld beth y mae’n ei baru tra nad yw hanes tasgau yn gysylltiedig eto.

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

Mae ysgogydd nad yw’n cyfateb i ddim yn dawel yn edrych yn union fel tasg sy’n rhedeg ac yn methu. Mae’r ddau yn ymddangos fel "nid yw’r awtomeiddio yn gweithio", ac nid oes yr un yn dweud pa hanner sydd ar goll. Gwiriwch allbwn yr ymholiad yn gyntaf, oherwydd mae’n gwahanu’r ddau achos mewn un cam.

Mae’r alwad yn methu oherwydd nad oes neb yno i deipio’r cyfrinair

Mae’r weithred yn rhedeg rasdial gydag enw’r cysylltiad. Pan nad oes gan y proffil dystlythyr wedi’i gadw, mae’r alwad yn methu ar unwaith oherwydd nad oes neb i ateb yr anogiad. Dyma’r rheswm mwyaf cyffredin pam nad yw tasg a ysgogwyd yn gywir yn gwneud dim gweladwy, felly gwiriwch hyn cyn cyffwrdd â’r ysgogydd. Mae galw â llaw o’r rhyngwyneb llinell orchymyn yn gwahanu problem tystlythyr oddi wrth broblem amserlennu.

Cadwch y tystlythyr unwaith o dan y cyfrif y bydd’r dasg yn rhedeg fel, a gwnewch y cyfrif hwnnw’n rhan o’r dyluniad. Ni all tasg sy’n rhedeg fel SYSTEM ddarllen tystlythyr a gadwyd gan eich cyfrif rhyngweithiol, ac ni all tasg sy’n rhedeg fel rhywun arall ychwaith. Rhaid i’r enw hefyd gyfateb yn union i’r proffil, gan gynnwys unrhyw ragosodiad parth yn y maes defnyddiwr.

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

Mae’r gorchymyn cyntaf yn rhestru’r enwau y mae Windows yn eu hadnabod. Mae’r ail yn alw wrth enw gan ddefnyddio’r tystlythyr a gadwyd, a’r trydydd yw’r ffurf y dylai gweithred PowerShell ei defnyddio, oherwydd mae’n aros ac yn dychwelyd gwerth y gall y dasg ei gofnodi.

Darllenwch y cod gadael yn lle’r ffenestr

Mae tasg sy’n cychwyn proses heb aros yn adrodd llwyddiant cyn gynted ag y bydd y broses yn bodoli. Ar gyfer alwad a all fethu eiliad yn ddiweddarach, mae’r dyfarniad hwnnw’n ddiwerth. Mae aros am y cod gadael yn troi’r weithred yn ganlyniad go iawn. Mae hanes tasgau ar ei ben ei hun yn dangos yn unig bod proses wedi cychwyn, byth bod twnnel wedi codi.

Cofnodwch y gwerth gyda stamp amser ar bob rhediad. Mae un methiant ar ôl methiant pŵer yn normal, tra bod tri methiant yn olynol gyda’r un cod yn awgrymu’r tystlythyr neu’r proffil yn hytrach na’r rhwydwaith. Y patrwm hwnnw sy’n gwneud yr hanes yn werth ei ddarllen o gwbl.

Ychwanegwch gyfwng ailadrodd byr fel yswiriant, a byddwch yn glir ynghylch sut mae’n rhyngweithio ag ysgogydd digwyddiad. Mae ailadrodd bob munud am bum munud yn darparu’r ail ymdrech pan ddaw’r rhyngrwyd yn ôl gyda’r twnnel, ac o dan Gosodiadau, "Os yw’r dasg eisoes yn rhedeg, mae’r rheol ganlynol yn berthnasol", mae’r dasg eisiau "Peidio â chychwyn enghraifft newydd" fel na all ailadrodd orgyffwrdd ag alwad sydd dal ar y gweill. Heb y gosodiad hwnnw, gall dwy broses rasdial rasio am yr un porthladd a bydd yr ail yn methu heb unrhyw reswm defnyddiol.

Profwch y llwybr adfer

Profwch y ddau gyfeiriad yn fwriadol. Datgysylltwch â llaw a chadarnhewch nad oes ail-alw yn digwydd, yna analluogwch y addasydd rhwydwaith a chadarnhewch fod y dasg yn tanio pan ddaw’r ddolen yn ôl. Mae’r ddau brawf hynny yn cwmpasu’r rheol atal a’r achos methiant go iawn, ac nid oes unrhyw beth arall yn gwneud hynny.

Darllenwch hanes y dasg wedyn yn hytrach na’r eicon cysylltiad. Mae’r hanes yn cofnodi pryd y rhedodd y dasg, pa gyfrif y defnyddiodd a beth a ddychwelodd y weithred, a dyna’r dystiolaeth sydd ei hangen pan fydd yr un peiriant yn disgyn eto y mis nesaf.

Erthyglau cysylltiedig