Скрыпт, які адкрывае акно VPN і потым спіць дзесяць секунд, гадае, і гэтае гаданне памылковае ў абодва бакі: ён пачынае капіраванне раней, чым тунель стане прыдатным, або чакае пасля таго, як праца магла б ужо пачацца. Ні адзін з вынікаў не паведамляе, ці скончылася аўтэнтыфікацыя. Выкарыстайце ўласны вынік каманды, а затым задайце сэрвісу пытанне, на якое ён сапраўды можа адказаць. Парадак гэтых двух крокаў — увесь дызайн.

Што каманда фактычна паведамляе

Для ўласнага профілю Windows, які разумее ўсталяваны інструмент каманднага радка, rasdial.exe набірае названы запіс і вяртае код выхаду працэсу. Гэты код апісвае спробу набору: нуль азначае, што злучэнне для гэтага профілю ўсталявана, а не нуль — што яно правалілася на этапе, які вызначае код. Чытайце гэта як вынік аднаго слоя, а не ўсёй задачы.

Вынік нічога не кажа пра прызначэнне адраса, прыватны DNS, дададзеныя маршруты або дазвол дасягнуць пэўнага сервера. Усё гэта адбываецца пасля паспяховага набору, і любое з гэтага ўсё яшчэ можа быць няправільным. Менавіта праз гэтую прагалку значок «падключана» і няўдалае капіраванне так часта сустракаюцца разам.

Зафіксуйце вынік, пакуль не запусцілася што-небудзь яшчэ

Пачніце з пацверджання, што профіль існуе для ўліковага запісу, які будзе выконваць задачу, а не толькі для запісу, з якога вы тэстуеце:

Get-VpnConnection -Name "Contoso-Office"
Get-VpnConnection -Name "Contoso-Office" -AllUserConnection

Затым набярыце і адразу прачытайце код. PowerShell захоўвае ўласны вынік у $LASTEXITCODE толькі да запуску наступнай знешняй каманды, таму выпадковы ping паміж наборам і праверкай знішчыць значэнне, якое вы хацелі прачытаць. Спачатку прысвойце яго ўласнай зменнай, а затым вырашайце, што рабіць.

& rasdial.exe "Contoso-Office"
$dial = $LASTEXITCODE
if ($dial -ne 0) { throw "rasdial failed with $dial" }

Залогуйце код разам з не сакрэтным тэкстам памылкі, бо адсутны запіс, адхіленыя ўліковыя даныя і тайм-аўт патрабуюць розных рэакцый. Табліца супастаўляе тыповыя вынікі з наступным дзеяннем.

ResultWhat it indicatesNext step
0The dial completedProbe the resource, do not start writing yet
691The credential or authentication method was rejectedFix the account or method, do not retry in a loop
623The named entry was not foundFix the profile name or its scope
Other non-zeroTransport, timeout or adapter failureRead the message, then check the path

Гатоўнасць — гэта рэсурс, а не тунель

Пасля паспяховага набору праверце тое, што патрэбна задачы. Агульны рэсурс, канцавая кропка API або порт базы даных — лепшая праверка гатоўнасці, чым публічны сайт, бо публічны сайт адказвае праз любы працоўны шлях і нічога не даказвае пра прыватны. Выберыце тую праверку, ад якой залежыць само прыкладанне. Паспяховае TCP-злучэнне кажа, што маршрутызацыя і фільтраванне адкрытыя, а гэта большасць таго, што патрэбна першаму запісу:

Test-NetConnection -ComputerName files.contoso.example -Port 445

Абмяжуйце колькасць спроб і зафіксуйце, на якім этапе адбылася няўдача. Адхіленыя ўліковыя даныя павінны спыніць скрыпт, а не карміць цыкл паўтораў; імя DNS, якое яшчэ не з’явілася, заслугоўвае некалькіх кароткіх паўтораў; порт, які ніколі не адкрываецца, — гэта праблема маршрутызацыі або палітыкі вышэй за кліента.

Калі злучэнне ўжо існавала да пачатку задачы, не чапайце яго. Разрыў сеансу, які вы не адкрывалі, перарывае іншую працу карыстальніка, таму зафіксуйце, каму належыць сеанс і якое закрыццё мэтазгоднае.

Абмяжуйце профіль уліковым запісам, які выконвае задачу

Планаваная задача выконваецца пад уласнай ідэнтычнасцю і сеансам, і профіль, які працуе на вашым працоўным стале, можа быць там нябачным. Паўтарыце праверку бачнасці і набор пад уліковым запісам задачы, перш чым давяраць раскладу. Трымайце пароль па-за камандным радком: аргументы бачныя іншым працэсам і часта трапляюць у журналы.

Калі разгортванне патрабуе запыту ў браўзеры, дотыку да смарт-карты або адабрэння MFA, гэтае ўзаемадзеянне — частка дызайну, і яго немагчыма аўтаматызаваць імітацыяй націскаў. Выкарыстайце падтрыманы кліент для гэтага выпадку і дайце чалавечаму кроку адбыцца.

Форма канчатковага скрыпта застаецца кароткай: праверце профіль, набярыце, прачытайце код, праверце рэсурс, затым пачынайце працу. Кожны крок адказвае на пытанне, на якое не мог адказаць папярэдні, і ні адзін з іх не спадзяецца на сон.

Падобныя артыкулы