rasdial ilmoittaa yhteydestä. Milloin verkko on oikeasti valmis?
Poistumiskoodi 0 tarkoittaa, että valinta valmistui, ei että tiedostojako vastaa. Tallenna alkuperäinen tulos ja testaa sitten resurssi, josta työ riippuu.
Komentosarja, joka avaa VPN-ikkunan ja nukkuu sitten kymmenen sekuntia, arvaa, ja arvaus menee pieleen molempiin suuntiin: se aloittaa kopioinnin ennen kuin tunneli on käyttökelpoinen tai odottaa sen jälkeen, kun työ olisi jo voinut alkaa. Kumpikaan tulos ei kerro, päättyikö todennus. Käytä komennon omaa tulosta ja esitä palvelulle kysymys, johon se voi todella vastata. Näiden kahden vaiheen järjestys on koko suunnittelu.
Mitä komento oikeasti ilmoittaa
Natiiville Windows-profiilille, jonka asennettu komentorivityökalu ymmärtää, rasdial.exe valitsee nimetyn merkinnän ja palauttaa prosessin poistumiskoodin. Tämä koodi kuvaa valintayritystä: nolla tarkoittaa, että yhteys muodostettiin kyseiselle profiilille, ja nollasta poikkeava, että se epäonnistui vaiheessa, jonka koodi yksilöi. Lue se yhden kerroksen tuloksena, ei työn tuloksena.
Tulos ei kerro mitään osoitteen jakamisesta, yksityisestä DNS:stä, lisätyistä reiteistä tai oikeudesta tavoittaa tietty palvelin. Kaikki se tapahtuu onnistuneen valinnan jälkeen, ja mikä tahansa niistä voi yhä olla väärin. Juuri tämä aukko on syy siihen, että yhdistetty-kuvake ja epäonnistunut kopiointi esiintyvät niin usein yhdessä.
Tallenna tulos ennen kuin mitään muuta ajetaan
Aloita vahvistamalla, että profiili on olemassa sille tilille, joka suorittaa työn, ei vain tilille, jolla testaat:
Get-VpnConnection -Name "Contoso-Office"
Get-VpnConnection -Name "Contoso-Office" -AllUserConnection
Valitse sitten ja lue koodi heti. PowerShell säilyttää alkuperäisen tuloksen $LASTEXITCODE-muuttujassa vain seuraavan ulkoisen komennon suorittamiseen asti, joten valinnan ja tarkistuksen väliin jäävä ping tuhoaa arvon, jonka olit lukemassa. Osoita se ensin omalle muuttujallesi ja päätä vasta sitten, mitä teet.
& rasdial.exe "Contoso-Office"
$dial = $LASTEXITCODE
if ($dial -ne 0) { throw "rasdial failed with $dial" }
Kirjaa koodi ei-salaisen virhetekstin kanssa, koska puuttuva merkintä, hylätyt tunnistetiedot ja aikakatkaisu vaativat erilaisia vastauksia. Taulukko yhdistää tavalliset tulokset seuraavaan toimeen.
| 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 |
Valmius on resurssi, ei tunneli
Kun valinta onnistuu, testaa se, mitä työ tarvitsee. Jaettu resurssi, API-päätepiste tai tietokantaportti on parempi valmiustesti kuin julkinen verkkosivusto, koska julkinen sivusto vastaa mitä tahansa toimivaa polkua pitkin eikä todista mitään yksityisestä. Valitse testi, josta sovellus itse riippuu. Onnistunut TCP-yhteys kertoo, että reititys ja suodatus ovat auki, ja se on suurin osa siitä, mitä ensimmäinen kirjoitus tarvitsee:
Test-NetConnection -ComputerName files.contoso.example -Port 445
Rajoita yrityksiä ja kirjaa, mikä vaihe epäonnistui. Hylättyjen tunnistetietojen pitäisi pysäyttää komentosarja eikä ruokkia uudelleenyrityssilmukkaa; DNS-nimi, joka ei ole vielä ilmestynyt, ansaitsee muutaman lyhyen uudelleenyrityksen; portti, joka ei koskaan avaudu, on reititys- tai käytäntöongelma asiakkaan yläpuolella.
Jos yhteys oli jo olemassa ennen työn alkua, jätä se rauhaan. Sellaisen istunnon katkaiseminen, jota et avannut, keskeyttää käyttäjän muun työn, joten kirjaa, kenen istunto on ja mikä lopetus on sopiva.
Rajaa profiili työn suorittavaan tiliin
Ajastettu tehtävä toimii oman identiteettinsä ja istuntonsa alla, ja profiili, joka toimii työpöydälläsi, voi olla siellä näkymätön. Toista näkyvyystarkistus ja valinta tehtävän tilin alla ennen kuin luotat aikatauluun. Pidä myös salasana poissa komentoriviltä: argumentit näkyvät muille prosesseille ja päätyvät usein lokeihin.
Jos käyttöönotto vaatii selainkehotteen, älykortin napautuksen tai MFA-hyväksynnän, tuo vuorovaikutus on osa suunnittelua eikä sitä voi automatisoida simuloimalla näppäinpainalluksia. Käytä kyseisessä tapauksessa tuettua asiakasta ja anna ihmisen vaiheen tapahtua.
Lopullisen komentosarjan muoto pysyy lyhyenä: tarkista profiili, valitse, lue koodi, testaa resurssi ja aloita sitten työ. Jokainen vaihe vastaa kysymykseen, johon edellinen ei pystynyt, eikä mikään niistä nojaa uneen.