rasdial javlja «povezano». Kada je mreža zaista spremna?
Izlazni kod 0 znači da je povezivanje završilo, a ne da mrežna mapa odgovara. Uhvatite izvorni rezultat, a zatim testirajte resurs o kojem posao ovisi.
Skripta koja otvori prozor VPN-a, a zatim spava deset sekundi, nagađa, i to nagađanje je pogrešno u oba smjera: počinje kopiranje prije nego što je tunel upotrebljiv ili čeka nakon što je posao već mogao početi. Nijedan od tih ishoda ne kaže je li provjera identiteta završila. Upotrijebite rezultat same komande, a zatim usluzi postavite pitanje na koje ona zaista može odgovoriti. Redoslijed tih dvaju koraka jest cijeli dizajn.
Šta komanda zapravo prijavljuje
Za izvorni Windows profil koji instalirani alat naredbenog retka razumije, rasdial.exe bira imenovani unos i vraća izlazni kod procesa. Taj kod opisuje pokušaj povezivanja: nula znači da je veza za taj profil uspostavljena, a vrijednost različita od nule znači da nije uspjela u fazi koju kod označava. Čitajte ga kao rezultat jednog sloja, a ne cijelog posla.
Rezultat ne govori ništa o dodjeli adrese, privatnom DNS-u, dodanim rutama ili o dopuštenju da se dosegne određeni poslužitelj. Sve se to događa nakon uspješnog povezivanja i svaka od tih stavki još može biti pogrešna. Upravo zbog te praznine ikona veze i neuspjelo kopiranje tako često postoje zajedno.
Uhvatite rezultat prije nego što se pokrene bilo što drugo
Započnite potvrdom da profil postoji za račun koji će izvršavati posao, a ne samo za račun s kojim testirate:
Get-VpnConnection -Name "Contoso-Office"
Get-VpnConnection -Name "Contoso-Office" -AllUserConnection
Zatim se povežite i odmah pročitajte kod. PowerShell čuva izvorni rezultat u $LASTEXITCODE samo do pokretanja sljedeće vanjske komande, pa zalutali ping između povezivanja i provjere uništava vrijednost koju ste namjeravali pročitati. Najprije ga dodijelite vlastitoj varijabli, a zatim odlučite što ćete učiniti.
& rasdial.exe "Contoso-Office"
$dial = $LASTEXITCODE
if ($dial -ne 0) { throw "rasdial failed with $dial" }
Zabilježite kod zajedno s tekstom pogreške koji nije tajna, jer unos koji nedostaje, odbijene vjerodajnice i istek vremena traže različite odgovore. Tablica povezuje uobičajene rezultate sa sljedećim korakom.
| Result | What it indicates | Next step |
|---|---|---|
| 0 | The dial completed | Probe the resource, do not start writing yet |
| 691 | The credential or authentication method was rejected | Fix the account or method, do not retry in a loop |
| 623 | The named entry was not found | Fix the profile name or its scope |
| Other non-zero | Transport, timeout or adapter failure | Read the message, then check the path |
Spremnost je resurs, a ne tunel
Kad povezivanje uspije, testirajte ono što posao treba. Mrežna mapa, API krajnja točka ili port baze podataka bolja je provjera spremnosti od javnog web-mjesta, jer javno mjesto odgovara kroz bilo koji put koji radi i ništa ne dokazuje o privatnome. Odaberite provjeru o kojoj ovisi sama aplikacija. Uspješna TCP veza kaže da su usmjeravanje i filtriranje otvoreni, a to je veći dio onoga što prvom upisu treba:
Test-NetConnection -ComputerName files.contoso.example -Port 445
Ograničite pokušaje i zabilježite koja je faza neuspjela. Odbijene vjerodajnice trebaju zaustaviti skriptu, a ne hraniti petlju ponovnih pokušaja; DNS ime koje se još nije pojavilo zaslužuje nekoliko kratkih ponovnih pokušaja; port koji se nikad ne otvori problem je usmjeravanja ili politike iznad klijenta.
Gdje je veza već postojala prije početka posla, ostavite je na miru. Prekidanje sjednice koju niste otvorili prekida drugi rad korisnika, pa zabilježite čija je sjednica i koje je zatvaranje primjereno.
Ograničite profil na račun koji izvršava posao
Planirani zadatak radi pod vlastitim identitetom i sjednicom, a profil koji radi na vašem računalu može ondje biti nevidljiv. Ponovno pokrenite provjeru vidljivosti i povezivanje pod računom zadatka prije nego što povjerujete rasporedu. Držite zaporku podalje od naredbenog retka: argumenti su vidljivi drugim procesima i često završe u zapisima.
Ako implementacija zahtijeva upit u pregledniku, dodir pametne kartice ili odobrenje MFA, ta je interakcija dio dizajna i ne može se automatizirati simuliranjem pritisaka tipki. Za takav slučaj upotrijebite podržanog klijenta i pustite da se ljudski korak dogodi.
Oblik konačne skripte ostaje kratak: provjerite profil, povežite se, pročitajte kod, testirajte resurs, a zatim počnite s poslom. Svaki korak odgovara na pitanje na koje prethodni nije mogao, i nijedan se ne oslanja na stanku.