Windows ei tarjoa VPN-asiakkaalleen mitään uudelleensoittokäytäntöä, joten keskiyöllä katkeava yhteys on yhä alhaalla aamiaisella. Ajastettu tehtävä, joka tarkkailee katkeamista ja suorittaa rasdial, sulkee tämän aukon ilman kolmannen osapuolen asiakasta. Se, toimiiko tehtävä kuin operaattori vai kuin silmukka, riippuu kolmesta yksityiskohdasta: mitä tapahtumia se sovittaa, mitä tunnistetietoa se näkee ja mitä se tekee tuloksella. Mikään kolmesta ei ole vaikea, ja minkä tahansa puuttuminen tuottaa tehtävän, joka soittaa ikuisesti.

Miksi ajastin on väärä laukaisin

Ajastin soittaa oman aikataulunsa mukaan riippumatta siitä, onko tunneli alhaalla. Se tuottaa yrityksiä, joita kukaan ei tarvinnut, ja yritys työistunnon aikana voi keskeyttää sen. Tapahtumalaukaisin laukeaa vain, kun yhteys vaihtaa tilaa, mikä on halvempaa ja helpompaa päätellä. Tapahtuma kantaa myös syyn, ja syy on se, mikä erottaa verkkovian henkilöstä, joka katkaisee tahallaan.

Tuo ero on ero hyödyllisen tehtävän ja sellaisen välillä, joka taistelee käyttäjän kanssa joka ilta. Se on myös osa, joka yleensä puuttuu resepteistä, jotka kuvaavat vain toiminnon.

Tapahtumapari ja se, joka on tukahdutettava

Remote Access Service -asiakas kirjoittaa elinkaaritietueita Application-lokiin tarjoajan RasClient alla. 20226 merkitsee päättynyttä yhteyttä ja 20227 epäonnistunutta yritystä, joten kumpi tahansa voi perustella uuden soiton. Kaikki muu tehtävässä riippuu näiden kahden tunnisteen tarkasta sovittamisesta. Ne ovat olleet vakaita vuosia, minkä vuoksi niille rakennetut reseptit kiertävät yhä, mutta koonti, joka nimeää tarjoajan tai tunnisteet uudelleen, saa kyselyn palauttamaan tyhjää. Suorita todistusvaihe uudelleen jokaisen ominaisuuspäivityksen jälkeen sen sijaan, että odottaisit tehtävän lakkaavan laukeamasta.

Yksi lopetus on jätettävä pois. Virhe 631 tarkoittaa, että käyttäjä katkaisi portin, ja uudelleensoitto sillä hetkellä taistelee juuri tahallaan verkkoa vaihtaneen henkilön kanssa. Laita poissulkeminen laukaisimen suodattimeen äläkä komentosarjaan, jotta tehtävä ei ala lainkaan. Sen on koskettava vain yhtä tapahtumatunnistetta, koska EventData-predikaatti täsmää vain, kun nimetty elementti on olemassa, ja jaettu lauseke pudottaisi hiljaa jokaisen toisen tunnisteen tapahtuman. Lue elementin nimi oikeasta tietueesta ennen suodattimen kirjoittamista:

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

XML näyttää kyseisen tietueen tarkat Data-nimet. ErrorCode on tavallinen kirjoitusasu, ja tietue, joka käyttää jotain muuta, vaatii tuon nimen korvaamista alla olevassa suodattimessa.

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

Liitä tuo laukaisimen mukautettuun suodattimeen ja todista se kyselynä ennen kuin siitä tulee laukaisin. Sama XPath ajetaan PowerShellistä live-lokia vasten, mikä on halpa tapa nähdä, mihin se täsmää, kun tehtävähistoria ei ole vielä mukana.

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

Laukaisin, joka hiljaa ei täsmää mihinkään, näyttää täsmälleen tehtävältä, joka ajetaan ja epäonnistuu. Molemmat näyttäytyvät muodossa "automaatio ei toimi", eikä kumpikaan kerro, kumpi puoli puuttuu. Tarkista ensin kyselyn tuloste, koska se erottaa kaksi tapausta yhdellä askeleella.

Soitto epäonnistuu, koska kukaan ei ole kirjoittamassa salasanaa

Toiminto suorittaa rasdial yhteyden nimellä. Kun profiililla ei ole välimuistiin tallennettua tunnistetietoa, soitto epäonnistuu heti, koska kukaan ei vastaa kehotteeseen. Tämä on yleisin syy siihen, että oikein laukaistu tehtävä ei tee mitään näkyvää, joten tarkista se ennen kuin kosket laukaisimeen. Käsin soittaminen komentokehotteesta erottaa tunnistetieto-ongelman ajastusongelmasta.

Tallenna tunnistetieto kerran sen tilin alle, jolla tehtävä suoritetaan, ja tee siitä tilistä osa suunnittelua. SYSTEMinä suoritettava tehtävä ei voi lukea vuorovaikutteisen tilisi välimuistiin tallentamaa tunnistetietoa, eikä tehtävä, joka suoritetaan jonain muuna. Nimen on myös vastattava profiilia tarkasti, mukaan lukien mahdollinen toimialueen etuliite käyttäjäkentässä.

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

Ensimmäinen komento luettelee nimet, jotka Windows tuntee. Toinen soittaa nimen perusteella välimuistiin tallennetulla tunnistetiedolla, ja kolmas on muoto, jota PowerShell-toiminnon tulisi käyttää, koska se odottaa ja palauttaa arvon, jonka tehtävä voi tallentaa.

Lue poistumiskoodi ikkunan sijaan

Tehtävä, joka käynnistää prosessin odottamatta, ilmoittaa onnistumisesta heti, kun prosessi on olemassa. Soitolle, joka voi epäonnistua sekuntia myöhemmin, tuo tuomio on arvoton. Poistumiskoodin odottaminen tekee toiminnosta todellisen tuloksen. Tehtävähistoria yksin näyttää vain, että prosessi käynnistyi, ei koskaan sitä, että tunneli nousi.

Kirjaa arvo aikaleimalla joka ajolla. Yksittäinen epäonnistuminen katkon jälkeen on normaalia, kun taas kolme peräkkäistä epäonnistumista samalla koodilla viittaa tunnistetietoon tai profiiliin eikä verkkoon. Juuri tämä kuvio tekee historiasta lukemisen arvoisen.

Lisää lyhyt toistoväli vakuudeksi ja kerro selvästi, miten se toimii yhdessä tapahtumalaukaisimen kanssa. Toisto joka minuutti viiden minuutin ajan antaa toisen yrityksen, kun internet palasi tunnelin mukana, ja kohdassa Asetukset, "Jos tehtävä on jo käynnissä, seuraava sääntö pätee", tehtävä haluaa "Älä käynnistä uutta esiintymää", jotta toisto ei mene päällekkäin vielä käynnissä olevan soiton kanssa. Ilman tätä asetusta kaksi rasdial-prosessia voivat kilpailla samasta portista ja toinen epäonnistuu ilman hyödyllistä syytä.

Todista palautumispolku

Testaa molemmat suunnat tahallaan. Katkaise käsin ja varmista, ettei uutta soittoa tapahdu, poista sitten verkkosovitin käytöstä ja varmista, että tehtävä laukeaa, kun linkki palaa. Nämä kaksi testiä kattavat tukahduttamissäännön ja todellisen vikatapauksen, eikä mikään muu tee sitä.

Lue sen jälkeen tehtävähistoria yhteyden kuvakkeen sijaan. Historia tallentaa, milloin tehtävä ajettiin, mitä tiliä se käytti ja mitä toiminto palautti, ja se on se näyttö, jota tarvitaan, kun sama kone putoaa taas ensi kuussa.

Aiheeseen liittyvät artikkelit