Skripts, kas atver VPN logu un pēc tam guļ desmit sekundes, min, un minējums ir nepareizs abos virzienos: tas sāk kopēšanu, pirms tunelis ir lietojams, vai gaida pēc tam, kad darbs jau varēja būt sācies. Neviens no rezultātiem nepasaka, vai autentifikācija ir pabeigta. Izmantojiet pašas komandas rezultātu, pēc tam uzdodiet servisam jautājumu, uz kuru tas patiešām var atbildēt. Šo divu soļu secība ir viss dizains.

Ko komanda patiešām ziņo

Vietējam Windows profilam, ko saprot instalētais komandrindas rīks, rasdial.exe izsauc nosauktu ierakstu un atgriež procesa izejas kodu. Šis kods apraksta zvanīšanas mēģinājumu: nulle nozīmē, ka savienojums šim profilam tika izveidots, bet ne nulle — ka tas neizdevās posmā, kuru kods norāda. Lasiet to kā viena slāņa rezultātu, nevis darba.

Rezultāts neko nepasaka par adreses piešķiršanu, privāto DNS, pievienotajiem maršrutiem vai atļauju sasniegt konkrētu serveri. Tas viss notiek pēc veiksmīgas zvanīšanas, un jebkurš no tiem joprojām var būt nepareizs. Tieši šī plaisa ir iemesls, kāpēc savienotā ikona un neizdevusies kopēšana tik bieži parādās kopā.

Reģistrējiet rezultātu, pirms sāk darboties kaut kas cits

Sāciet ar apstiprinājumu, ka profils pastāv kontam, kas izpildīs darbu, nevis tikai kontam, ar kuru jūs testējat:

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

Pēc tam zvaniet un nekavējoties lasiet kodu. PowerShell glabā sākotnējo rezultātu $LASTEXITCODE tikai līdz nākamās ārējās komandas izpildei, tāpēc nejaušs ping starp zvanīšanu un pārbaudi iznīcina vērtību, kuru gribējāt nolasīt. Vispirms piešķiriet to savam mainīgajam, pēc tam izlemiet, ko darīt.

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

Reģistrējiet kodu kopā ar ne slepeno kļūdas tekstu, jo trūkstošs ieraksts, noraidīti akreditācijas dati un taimauts prasa dažādas reakcijas. Tabula saista ierastos rezultātus ar nākamo soli.

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

Gatavība ir resursu, nevis tunelis

Kad zvanīšana izdodas, pārbaudiet to, kas darbam vajadzīgs. Koplietojums, API galapunkts vai datubāzes ports ir labāks gatavības tests nekā publiska vietne, jo publiska vietne atbild pa jebkuru strādājošu ceļu un neko nepierāda par privāto. Izvēlieties to pārbaudi, no kuras atkarīga pati lietotne. Veiksmīgs TCP savienojums pasaka, ka maršrutēšana un filtrēšana ir atvērtas, un tas ir lielākā daļa no tā, kas vajadzīgs pirmajai rakstīšanai:

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

Ierobežojiet mēģinājumus un reģistrējiet, kurš posms neizdevās. Noraidīti akreditācijas dati apturēt skriptu, nevis barot atkārtošanas cilpu; DNS nosaukums, kas vēl nav parādījies, ir pelnījis dažus īsus atkārtojumus; ports, kas nekad neatveras, ir maršrutēšanas vai politikas problēma virs klienta.

Ja savienojums jau pastāvēja pirms darba sākuma, atstājiet to mierā. Tādas sesijas atvienošana, kuru jūs neatvērāt, pārtrauc citu lietotāja darbu, tāpēc reģistrējiet, kam pieder sesija un kāda slēgšana ir piemērota.

Ierobežojiet profilu ar kontu, kas izpilda darbu

Ieplānots uzdevums darbojas ar savu identitāti un sesiju, un profils, kas darbojas jūsu darbvirsmā, tur var būt neredzams. Atkārtojiet redzamības pārbaudi un zvanīšanu uzdevuma kontā, pirms uzticaties grafikam. Turiet paroli prom no komandrindas: argumenti ir redzami citiem procesiem un bieži nonāk žurnālos.

Ja izvietošanai nepieciešams pārlūka pieprasījums, viedkartes pieskāriens vai MFA apstiprinājums, šī mijiedarbība ir dizaina daļa un to nevar automatizēt, imitējot taustiņu nospiedumus. Šim gadījumam izmantojiet atbalstīto klientu un ļaujiet notikt cilvēka solim.

Galīgā skripta forma paliek īsa: pārbaudiet profilu, zvaniet, lasiet kodu, pārbaudiet resursu, pēc tam sāciet darbu. Katrs solis atbild uz jautājumu, uz kuru iepriekšējais nevarēja, un neviens no tiem nepaļaujas uz miegu.

Saistītie raksti