Windows өзүнүн VPN кардары үчүн кайра чалуу саясатын сунуштабайт, ошондуктан түн ортосунда үзүлгөн байланыш эртең мененки тамак убагында да өчүк турат. Үзүлүүнү көзөмөлдөп, rasdial иштеткен пландалган тапшырма бул боштукту үчүнчү тараптын кардарысыз жабат. Тапшырма оператор сыяктуу же цикл сыяктуу иштейби, бул үч деталга байланыштуу: кайсы окуяларга дал келет, кайсы каттоо маалыматтарын көрө алат жана натыйжа менен эмне кылат. Үчөөнүн эч бири кыйын эмес, жана алардын бирин өткөрүп жиберүү түбөлүк чала турган тапшырманы жаратат.

Эмне үчүн таймер туура эмес триггер

Таймер туннель өчүк болобу же жокпу, өзүнүн графиги боюнча чалат. Бул эч кимге керек болбогон аракеттерди жаратат, ал эми жумуш сеансы учурундагы аракет аны үзүшү мүмкүн. Окуя триггери байланыш абалын өзгөрткөндө гана иштет, бул арзаныраак жана ойлонууга оңой. Окуя себепти да алып жүрөт, ал эми себеп тармактын бузулушун атайын ажыраткан адамдан ажыратат.

Бул айырма пайдалуу тапшырма менен ар кечинде колдонуучу менен күрөшкөн тапшырманын ортосундагы айырма. Бул ошондой эле рецепттерде көбүнчө жетишпеген бөлүк, алар аракетти гана сүрөттөйт.

Окуялардын жубу жана басылышы керек болгону

Remote Access Service кардары жашоо циклинин жазууларын RasClient провайдеринин астындагы Application журналына жазат. 20226 аяктаган байланышты, ал эми 20227 ийгиликсиз аракетти белгилейт, ошондуктан экөө тең жаңы чалууну негиздей алат. Тапшырмадагы калган нерселердин баары ушул эки идентификаторду так дал келтирүүгө байланыштуу. Алар жылдар бою туруктуу, ошондуктан аларга негизделген рецепттер азыркыга чейин айланып жүрөт, бирок провайдердин же идентификаторлордун атын өзгөрткөн куруу суроо эч нерсе кайтарбашына алып келет. Ар бир функция жаңыртуудан кийин далилдөө кадамын кайра аткарыңыз, тапшырманын иштөөсү токтошун күтүүнүн ордуна.

Бир аяктоону четтетүү керек. 631 катасы портту колдонуучу ажыраткандыгын билдирет, ал эми ошол учурда кайра чалуу так азыр атайын тармакты алмаштырган адам менен күрөшөт. Четтетүүнү скриптке эмес, триггердин чыпкасына коюңуз, тапшырма такыр башталбасын. Ал бир гана окуя идентификаторуна тиешелүү болушу керек, анткени EventData предикаты аталган элемент бар болгондо гана дал келет, ал эми жалпы шарт башка идентификатордун бардык окуяларын үнсүз таштамак. Чыпканы жазганга чейин элементтин атын чыныгы жазуудан окуңуз:

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

XML ошол жазуудагы Data так аттарын көрсөтөт. ErrorCode адаттагы жазылышы, ал эми башка нерсени колдонгон жазуу төмөнкү чыпкада ошол атты алмаштырууну талап кылат.

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

Муну триггердин ыңгайлаштырылган чыпкасына чаптап, триггер болгонго чейин суроо катары далилдеңиз. Ошол эле XPath PowerShell-ден тирүү журналга каршы иштейт, бул тапшырма тарыхы али аралашпаганда эмнеге дал келерин көрүүнүн арзан жолу.

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

Үнсүз эч нерсеге дал келбеген триггер иштеп, ийгиликсиз болгон тапшырмага так окшош. Экөө тең «автоматташтыруу иштебейт» деп көрүнөт, жана эч бири кайсы жарымы жетишпей жатканын айтпайт. Адегенде суроонун чыгышын текшериңиз, анткени ал эки учурду бир кадамда ажыратат.

Чалуу ийгиликсиз болот, анткени сырсөздү теретүүчү эч ким жок

Аракет rasdial байланыштын аты менен иштетет. Профилде кэштөөлөнгөн каттоо маалыматтары жок болсо, чалуу дароо ийгиликсиз болот, анткени сурамга жооп берүүчү эч ким жок. Туура триггерленген тапшырманын көрүнөрлүк эч нерсе кылбашынын эң көп тараган себеби ушул, ошондуктан триггерге тийүүдөн мурун муну текшериңиз. Буйрук сабынан кол менен чалуу каттоо маалыматтарынын маселесин пландоо маселесинен ажыратат.

Каттоо маалыматтарын тапшырма иштей турган аккаунттун астында бир жолу сактаңыз жана ошол аккаунтту дизайндын бөлүгү кылыңыз. SYSTEM катары иштеген тапшырма сиздин интерактивдүү аккаунтуңуз кэштеген маалыматтарды окуй албайт, башка бирөө катары иштеген тапшырма да окуй албайт. Аты ошондой эле профилге так дал келиши керек, колдонуучу талаасындагы ар кандай домен префиксин кошуп.

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

Биринчи буйрук Windows билген аттарды тизмелейт. Экинчиси кэштеген каттоо маалыматтарын колдонуп ат боюнча чалат, үчүнчүсү — PowerShell аракети колдонууга тийиш болгон форма, анткени ал күтөт жана тапшырма жаза алган маанини кайтарат.

Терезенин ордуна чыгуу кодун окуңуз

Процессти күтпөстөн баштаган тапшырма процесс пайда болгон замат ийгилик жөнүндө билдирет. Бир секунддан кийин ийгиликсиз болушу мүмкүн болгон чалуу үчүн бул өкүм пайдасыз. Чыгуу кодун күтүү аракетти чыныгы натыйжага айландырат. Тапшырманын тарыхы өзү гана процесстин башталганын көрсөтөт, туннелдин көтөрүлгөнүн эч качан көрсөтпөйт.

Ар бир иштөөдө маанини убакыт белгиси менен жазыңыз. Үзүлүүдөн кийин жалгыз ийгиликсиздик кадимки, ал эми бир эле код менен катары менен үч ийгиликсиздик тармакка эмес, каттоо маалыматтарына же профилге көрсөтөт. Так ушул үлгү тарыхты окууга татыктуу кылат.

Камсыздандыруу катары кыска кайталоо интервалын кошуңуз жана анын окуя триггери менен кантип аракеттенишин так айтыңыз. Беш мүнөт ичинде ар бир мүнөттө кайталоо интернет туннель менен кайтып келгенде экинчи аракетти берет, ал эми Жөндөөлөрдө «Эгер тапшырма мурунтан иштеп жатса, төмөнкү эреже колдонулат» дегенде тапшырма «Жаңы нусканы баштаба» деп каалайт, ошондуктан кайталоо али уланып жаткан чалуу менен катталышпайт. Бул жөндөөсүз эки rasdial процесси бир порт үчүн атаандаша алат жана экинчиси пайдалуу себепсиз ийгиликсиз болот.

Калыбына келтирүү жолун далилдеңиз

Эки багытты тең атайын сынап көрүңүз. Кол менен ажыратып, кайра чалуу болбой турганын ырастаңыз, андан кийин тармак адаптерин өчүрүп, байланыш кайтканда тапшырма иштээрин ырастаңыз. Бул эки сыноо басуу эрежесин жана ийгиликсиздиктин чыныгы учурун камтыйт, жана башка эч нерсе муну кылбайт.

Андан кийин байланыш белгисинин ордуна тапшырманын тарыхын окуңуз. Тарых тапшырманын качан иштегенин, кайсы аккаунтту колдонгонун жана аракеттин эмне кайтарганын жазат, жана кийинки айда ошол эле машине кайра үзүлгөндө так ушул далил керек болот.

Тектеш макалалар