rasdial pravi »povezano«. Kdaj je omrežje res pripravljeno?
Izhodna koda 0 pomeni, da je klic končan, ne da skupna mapa odgovarja. Zajemite izvorni rezultat in nato preizkusite vir, od katerega je delo odvisno.
Skript, ki odpre okno VPN in nato spi deset sekund, ugiba, in ta ugibanja sta napačna v obe smeri: kopiranje začne, preden je tunel uporaben, ali čaka, potem ko bi se delo že lahko začelo. Noben od teh izidov ne pove, ali se je preverjanje pristnosti končalo. Uporabite rezultat samega ukaza in nato storitvi postavite vprašanje, na katero res lahko odgovori. Vrstni red teh dveh korakov je celotna zasnova.
Kaj ukaz v resnici sporoča
Za izvorni profil Windows, ki ga nameščeno orodje ukazne vrstice razume, rasdial.exe pokliče imenovani vnos in vrne izhodno kodo procesa. Ta koda opisuje poskus klicanja: nič pomeni, da je bila povezava za ta profil vzpostavljena, vrednost, ki ni nič, pa da ni uspela na stopnji, ki jo koda označuje. Berite jo kot rezultat ene plasti, ne celotnega dela.
Rezultat ne pove ničesar o dodeljevanju naslova, zasebnem DNS, dodanih poteh ali o dovoljenju za doseganje določenega strežnika. Vse to se zgodi po uspešnem klicu in kateri koli od teh delov je lahko še vedno napačen. Prav zaradi te vrzeli ikona povezave in neuspešno kopiranje tako pogosto obstajata skupaj.
Zajemite rezultat, preden se zažene karkoli drugega
Začnite s potrditvijo, da profil obstaja za račun, ki bo izvajal delo, ne le za račun, s katerim preizkušate:
Get-VpnConnection -Name "Contoso-Office"
Get-VpnConnection -Name "Contoso-Office" -AllUserConnection
Nato pokličite in takoj preberite kodo. PowerShell hrani izvorni rezultat v $LASTEXITCODE le do zagona naslednjega zunanjega ukaza, zato zablodela ping med klicem in preverjanjem uniči vrednost, ki ste jo nameravali prebrati. Najprej jo dodelite svoji spremenljivki, šele nato odločite, kaj boste storili.
& rasdial.exe "Contoso-Office"
$dial = $LASTEXITCODE
if ($dial -ne 0) { throw "rasdial failed with $dial" }
Zapišite kodo skupaj z besedilom napake, ki ni skrivnost, ker manjkajoči vnos, zavrnjene poverilnice in potek časa zahtevajo različne odzive. Tabela poveže običajne rezultate z naslednjim dejanjem.
| 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 |
Pripravljenost je vir, ne tunel
Ko klic uspe, preizkusite tisto, kar delo potrebuje. Skupna mapa, končna točka API ali vrata podatkovne baze so boljši preizkus pripravljenosti kot javno spletno mesto, ker javno mesto odgovori po kateri koli delujoči poti in ne dokaže ničesar o zasebni. Izberite preizkus, od katerega je odvisna aplikacija sama. Uspešna povezava TCP pove, da sta usmerjanje in filtriranje odprta, in to je večina tega, kar prvi zapis potrebuje:
Test-NetConnection -ComputerName files.contoso.example -Port 445
Omejite poskuse in zapišite, katera stopnja ni uspela. Zavrnjene poverilnice naj skript ustavijo, ne pa hranijo zanke ponovnih poskusov; ime DNS, ki se še ni pojavilo, si zasluži nekaj kratkih ponovnih poskusov; vrata, ki se nikoli ne odprejo, so težava usmerjanja ali pravilnika nad odjemalcem.
Kjer je povezava obstajala že pred začetkom dela, jo pustite pri miru. Prekinitev seje, ki je niste odprli, prekine drugo delo uporabnika, zato zapišite, čigava je seja in katera zapora je ustrezna.
Omejite profil na račun, ki izvaja delo
Načrtovano opravilo teče pod svojo identiteto in sejo, profil, ki deluje na vašem namizju, pa je lahko tam neviden. Znova zaženite preverjanje vidnosti in klic pod računom opravila, preden zaupate razporedu. Geslo držite stran od ukazne vrstice: argumenti so vidni drugim procesom in pogosto končajo v dnevnikih.
Če uvajanje zahteva poziv v brskalniku, dotik pametne kartice ali odobritev MFA, je ta interakcija del zasnove in je ni mogoče avtomatizirati s simuliranjem pritiskov tipk. Za tak primer uporabite podprtega odjemalca in pustite, da se človeški korak zgodi.
Oblika končnega skripta ostane kratka: preverite profil, pokličite, preberite kodo, preizkusite vir in nato začnite delo. Vsak korak odgovori na vprašanje, na katero prejšnji ni mogel, in noben od njih ni odvisen od premora.