Windows-ը չի առաջարկում վերահավաքման քաղաքականություն իր VPN հաճախորդի համար, ուստի կեսգիշերին ընդհատված կապը նախաճաշին դեռ անջատված է։ Ժամանակացույցով առաջադրանքը, որը հետևում է անջատմանը և գործարկում rasdial, փակում է այդ բացը առանց երրորդ կողմի հաճախորդի։ Առաջադրանքը որպես օպերատոր է վարվում, թե որպես հանգույց, կախված է երեք մանրամասներից՝ որ իրադարձություններին է այն համապատասխանում, ո՛ր հավատարմագրին կարող է տեսնել, և ինչ է անում արդյունքի հետ։ Երեքից ոչ մեկը դժվար չէ, և դրանցից որևէ մեկի բաց թողնելն է, որ ստեղծում է առաջադրանք, որը հավաքում է հավերժ։

Ինչու ժամաչափը սխալ ձգան է

Ժամաչափը հավաքում է իր ժամանակացույցով՝ անկախ նրանից՝ թունելը անջատված է, թե ոչ։ Դա առաջացնում է փորձեր, որոնց ոչ ոք կարիք չուներ, և աշխատանքային սեսիայի ընթացքում արված փորձը կարող է ընդհատել այն։ Իրադարձության ձգանը գործարկվում է միայն այն ժամանակ, երբ կապը փոխում է վիճակը, ինչը ավելի էժան է և ավելի հեշտ՝ դատելու համար։ Իրադարձությունը կրում է նաև պատճառը, և պատճառն է, որ առանձնացնում է ցանցի խափանումը դիտավորյալ անջատվող մարդուց։

Այդ տարբերությունն է տարբերությունը օգտակար առաջադրանքի և ամեն երեկո օգտվողի հետ կռվող առաջադրանքի միջև։ Դա նաև այն մասն է, որը սովորաբար բացակայում է միայն գործողությունը նկարագրող բաղադրատոմսերում։

Իրադարձությունների զույգը, և այն, որը պետք է ճնշել

Remote Access Service-ի հաճախորդը կենսացիկլի գրառումները գրում է Application մատյանում՝ RasClient մատակարարի ներքո։ 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 գործընթաց կարող են մրցել նույն պորտի համար, և երկրորդը ձախողվում է առանց օգտակար պատճառի։

Ապացուցեք վերականգնման ուղին

Փորձարկեք երկու ուղղությունները դիտավորյալ։ Անջատեք ձեռքով և հաստատեք, որ նոր հավաքում տեղի չի ունենում, ապա անջատեք ցանցային ադապտերը և հաստատեք, որ առաջադրանքը գործարկվում է, երբ կապը վերադառնում է։ Այդ երկու փորձարկումները ծածկում են ճնշման կանոնը և ձախողման իրական դեպքը, և ուրիշ ոչինչ դա չի անում։

Դրանից հետո կարդացեք առաջադրանքի պատմությունը՝ կապի պատկերակի փոխարեն։ Պատմությունը գրանցում է, թե երբ է աշխատել առաջադրանքը, որ հաշիվն է օգտագործել և ինչ է վերադարձրել գործողությունը, և դա է այն ապացույցը, որն անհրաժեշտ է, երբ նույն մեքենան հաջորդ ամիս նորից անջատվի։

Առնչվող հոդվածներ