rasdial diras ke ĝi estas konektita. Kiam la reto vere pretas?
Elirkodo 0 signifas ke la vokado finiĝis, ne ke la dosierkomunaĵo respondas. Registru la originan rezulton, poste testu la rimedon de kiu la tasko dependas.
Skripto, kiu malfermas la fenestron de VPN kaj poste dormas dek sekundojn, konjektas, kaj la konjekto malĝustas en ambaŭ direktoj: ĝi komencas la kopiadon antaŭ ol la tunelo uzeblas, aŭ ĝi atendas post kiam la laboro jam povintus komenciĝi. Neniu el la du rezultoj diras ĉu la aŭtentikigo finiĝis. Uzu la propran rezulton de la komando, poste demandu al la servo demandon kiun ĝi vere povas respondi. La ordo de tiuj du paŝoj estas la tuta dezajno.
Kion la komando fakte raportas
Por indiĝena Windows-profilo kiun komprenas la instalita komandlinia ilo, rasdial.exe vokas nomitan enskribon kaj redonas elirkodon de la procezo. Tiu kodo priskribas la provon de vokado: nul signifas ke la konekto estis starigita por tiu profilo, kaj ne-nulo signifas ke ĝi malsukcesis en etapo kiun la kodo indikas. Legu ĝin kiel rezulton de unu tavolo, ne de la tasko.
La rezulto diras nenion pri adresasigno, privata DNS, aldonitaj itineroj aŭ la permeso atingi apartan servilon. Ĉio tio okazas post sukcesa vokado, kaj iu ajn el ĝi ankoraŭ povas esti malĝusta. Ĝuste tiu breĉo estas kial konektita piktogramo kaj malsukcesa kopiado tiel ofte kunekzistas.
Registru la rezulton antaŭ ol io ajn alia ruliĝos
Komencu per konfirmo ke la profilo ekzistas por la konto kiu plenumos la taskon, ne nur por la konto per kiu vi testas:
Get-VpnConnection -Name "Contoso-Office"
Get-VpnConnection -Name "Contoso-Office" -AllUserConnection
Poste voku kaj tuj legu la kodon. PowerShell konservas la originan rezulton en $LASTEXITCODE nur ĝis la sekva ekstera komando ruliĝos, do hazarda ping inter la vokado kaj la kontrolo detruas la valoron kiun vi intencis legi. Unue atribuu ĝin al via propra variablo, poste decidas kion fari.
& rasdial.exe "Contoso-Office"
$dial = $LASTEXITCODE
if ($dial -ne 0) { throw "rasdial failed with $dial" }
Registru la kodon kune kun la ne-sekreta erarteksto, ĉar mankanta enskribo, rifuzitaj akreditaĵoj kaj tempolimo postulas malsamajn respondojn. La tabelo ligas la kutimajn rezultojn al la sekva ago.
| 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 |
Preteco estas la rimedo, ne la tunelo
Post kiam la vokado sukcesos, testu tion kion la tasko bezonas. Komunaĵo, API-finpunkto aŭ datumbaza pordo estas pli bona preteca testo ol publika retejo, ĉar publika retejo respondas tra iu ajn funkcianta vojo kaj pruvas nenion pri la privata. Elektu la teston de kiu la aplikaĵo mem dependas. Sukcesa TCP-konekto diras ke enkursigado kaj filtrado estas malfermitaj, kaj tio estas la plej granda parto de tio kion la unua skribo bezonas:
Test-NetConnection -ComputerName files.contoso.example -Port 445
Limigu la provojn kaj registru kiun etapon malsukcesis. Rifuzitaj akreditaĵoj devus haltigi la skripton anstataŭ nutri ripetan buklon; DNS-nomo kiu ankoraŭ ne aperis meritas kelkajn mallongajn ripetojn; pordo kiu neniam malfermiĝas estas enkursigada aŭ politika problemo super la kliento.
Se la konekto jam ekzistis antaŭ ol la tasko komenciĝis, lasu ĝin trankvila. Malkonekti seancon kiun vi ne malfermis interrompas la alian laboron de la uzanto, do registru kiu posedas la seancon kaj kiu finado taŭgas.
Limigu la profilon al la konto kiu plenumas la taskon
Planita tasko ruliĝas sub sia propra identeco kaj seanco, kaj profilo kiu funkcias sur via labortablo povas esti nevidebla tie. Ripetu la videblecan kontrolon kaj la vokadon sub la konto de la tasko antaŭ ol fidi la horaron. Tenu la pasvorton ekster la komandlinio ankaŭ: argumentoj estas videblaj al aliaj procezoj kaj ofte finiĝas en protokoloj.
Se la deplojo postulas retumilan instigon, frapeton de inteligenta karto aŭ MFA-approbon, tiu interago estas parto de la dezajno kaj ne povas esti aŭtomatigita per simulaj klavopremoj. Uzu la subtenatan klienton por tiu kazo kaj lasu la homan paŝon okazi.
La formo de la fina skripto restas mallonga: kontrolu la profilon, voku, legu la kodon, testu la rimedon, poste komencu la laboron. Ĉiu paŝo respondas al demando kiun la antaŭa ne povis, kaj neniu el ili fidas je dormo.