Skript, mis avab VPN-i akna ja magab seejärel kümme sekundit, oletab, ja oletus on vale mõlemas suunas: see alustab kopeerimist enne, kui tunnel on kasutatav, või ootab pärast seda, kui töö oleks juba võinud alata. Kumbki tulemus ei ütle, kas autentimine lõppes. Kasutage käsu enda tulemust ja esitage teenusele küsimus, millele see tõesti vastata suudab. Nende kahe sammu järjekord on kogu disain.

Mida käsk tegelikult teatab

Natiivse Windowsi profiili puhul, millest paigaldatud käsureatööriist aru saab, valib rasdial.exe nimega kirje ja tagastab protsessi väljumiskoodi. See kood kirjeldab valimiskatset: null tähendab, et ühendus loodi selle profiili jaoks, ja nullist erinev, et see ebaõnnestus etapis, mille kood määrab. Lugege seda ühe kihi tulemusena, mitte töö tulemusena.

Tulemus ei ütle midagi aadressi määramise, privaatse DNS-i, lisatud marsruutide ega konkreetsele serverile pääsemise loa kohta. Kõik see juhtub pärast edukat valimist ja ükskõik milline neist võib ikka veel vale olla. Just see lünk on põhjus, miks ühendatud ikoon ja ebaõnnestunud kopeerimine nii sageli koos esinevad.

Salvestage tulemus enne, kui midagi muud käivitub

Alustage kinnitusest, et profiil on olemas selle konto jaoks, mis tööd käivitab, mitte ainult konto jaoks, millega te testite:

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

Seejärel valige ja lugege kood kohe. PowerShell hoiab natiivset tulemust $LASTEXITCODE ainult kuni järgmise välise käsu käivitamiseni, nii et juhuslik ping valimise ja kontrolli vahel hävitab väärtuse, mida kavatsesite lugeda. Määrake see esmalt oma muutujale ja seejärel otsustage, mida teha.

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

Logige kood koos mitte-salajase veatekstiga, sest puuduv kirje, tagasilükatud volitused ja aegumine nõuavad erinevaid vastuseid. Tabel seob tavalised tulemused järgmise sammuga.

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

Valmidus on ressurss, mitte tunnel

Kui valimine õnnestub, testige seda, mida töö vajab. Jagatud ressurss, API-lõpp-punkt või andmebaasi port on parem valmiduse test kui avalik veebisait, sest avalik sait vastab iga toimiva tee kaudu ega tõesta privaatse tee kohta midagi. Valige test, millest rakendus ise sõltub. Edukas TCP-ühendus ütleb, et marsruutimine ja filtreerimine on avatud, ja see on suurem osa sellest, mida esimene kirjutamine vajab:

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

Piirake katseid ja registreerige, milline etapp ebaõnnestus. Tagasilükatud volitused peaksid skripti peatama, mitte toitma korduskatsete tsüklit; DNS-i nimi, mis pole veel ilmunud, väärib mõnda lühikest korduskatset; port, mis kunagi ei avane, on marsruutimise või poliitika probleem kliendi kohal.

Kui ühendus oli juba enne töö algust olemas, jätke see rahule. Sessiooni katkestamine, mida te ei avanud, segab kasutaja muud tööd, seega registreerige, kellele sessioon kuulub ja milline lõpetamine on asjakohane.

Piiritle profiil kontoga, mis tööd käivitab

Planeeritud ülesanne töötab oma identiteedi ja sessiooni all ning profiil, mis töötab teie töölaual, võib seal nähtamatu olla. Enne ajakava usaldamist korrake nähtavuse kontrolli ja valimist ülesande konto all. Hoidke parool käsurealt eemal: argumendid on teistele protsessidele nähtavad ja satuvad sageli logidesse.

Kui juurutamine nõuab brauseri viipa, nutikaardi puudutust või MFA kinnitust, on see interaktsioon disaini osa ja seda ei saa klahvivajutuste simuleerimisega automatiseerida. Kasutage selleks juhuks toetatud klienti ja laske inimlikul sammul juhtuda.

Lõpliku skripti kuju jääb lühikeseks: kontrollige profiili, valige, lugege kood, testige ressurssi ja seejärel alustage tööd. Iga samm vastab küsimusele, millele eelmine ei suutnud, ja ükski neist ei toetu unele.

Seotud artiklid