Az a szkript, amely megnyitja a VPN ablakát, majd tíz másodpercet alszik, találgat, és a találgatás mindkét irányban hibás: vagy a kopírozást kezdi el, mielőtt az alagút használható, vagy akkor vár, amikor a munka már elkezdődhetett volna. Egyik eredmény sem mondja meg, befejeződött-e a hitelesítés. Használja magának a parancsnak az eredményét, majd tegyen fel a szolgáltatásnak egy kérdést, amelyre valóban tud válaszolni. A két lépés sorrendje maga a teljes tervezés.

Mit jelent valójában a parancs

Egy natív Windows-profilhoz, amelyet a telepített parancssori eszköz megért, a rasdial.exe kiválaszt egy elnevezett bejegyzést, és visszaadja a folyamat kilépési kódját. Ez a kód a tárcsázási kísérletet írja le: a nulla azt jelenti, hogy a kapcsolat létrejött ahhoz a profilhoz, a nem nulla pedig azt, hogy egy általa megjelölt szakaszban meghiúsult. Egy réteg eredményeként olvassa, ne a feladat eredményeként.

Az eredmény semmit sem mond a címkiosztásról, a privát DNS-ről, a hozzáadott útvonalakról vagy egy adott kiszolgáló elérésének engedélyéről. Mindez sikeres tárcsázás után történik, és bármelyikük még mindig hibás lehet. Ez a rés az oka annak, hogy a csatlakozva ikon és a sikertelen másolás olyan gyakran jelenik meg együtt.

Rögzítse az eredményt, mielőtt bármi más fut

Kezdje annak megerősítésével, hogy a profil ahhoz a fiókhoz létezik, amely a feladatot futtatja, nem csak ahhoz, amellyel tesztel:

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

Ezután tárcsázzon, és azonnal olvassa el a kódot. A PowerShell csak a következő külső parancs futásáig őrzi a natív eredményt a $LASTEXITCODE változóban, így egy tévedésből oda került ping a tárcsázás és az ellenőrzés között megsemmisíti az olvasni kívánt értéket. Először rendelje saját változójához, és csak utána döntse el, mit tegyen.

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

Naplózza a kódot a nem titkos hibaüzenettel együtt, mert a hiányzó bejegyzés, az elutasított hitelesítő adatok és az időtúllépés különböző válaszokat igényel. A táblázat a gyakori eredményeket a következő lépéshez rendeli.

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

A készenlét az erőforrás, nem az alagút

Ha a tárcsázás sikerül, vizsgálja meg azt, amire a feladatnak szüksége van. Egy megosztás, egy API-végpont vagy egy adatbázisport jobb készenléti próba, mint egy nyilvános webhely, mert a nyilvános hely bármely működő útvonalon válaszol, és semmit sem bizonyít a privát útvonalról. Válassza azt a próbát, amelytől maga az alkalmazás függ. A sikeres TCP-kapcsolat azt mondja, hogy az útválasztás és a szűrés nyitva van, és az első írásnak nagyrészt erre van szüksége:

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

Korlátozza a kísérleteket, és jegyezze fel, melyik szakasz hibázott. Az elutasított hitelesítő adatoknak le kell állítaniuk a szkriptet, nem pedig újrapróbálkozási ciklust táplálniuk; a még meg nem jelent DNS-név néhány rövid újrapróbálkozást érdemel; a soha nem nyíló port az ügyfél feletti útválasztási vagy házirend-probléma.

Ahol a kapcsolat már a feladat kezdete előtt létezett, hagyja békén. Egy olyan munkamenet bontása, amelyet nem Ön nyitott, megzavarja a felhasználó más munkáját, ezért jegyezze fel, kié a munkamenet, és milyen lezárás megfelelő.

Szűkítse a profilt a feladatot futtató fiókra

Az ütemezett feladat a saját identitása és munkamenete alatt fut, és egy asztalán működő profil ott láthatatlan lehet. Ismételje meg a láthatósági ellenőrzést és a tárcsázást a feladat fiókja alatt, mielőtt megbízik az ütemezésben. Tartsa a jelszót távol a parancssortól is: az argumentumok más folyamatok számára láthatók, és gyakran naplókba kerülnek.

Ha az üzembe helyezés böngészős kérést, intelligens kártya érintését vagy MFA-jóváhagyást igényel, ez az interakció a tervezés része, és nem automatizálható billentyűleütések szimulálásával. Használja az adott esethez támogatott klienst, és hagyja, hogy megtörténjen az emberi lépés.

A végleges szkript formája rövid marad: ellenőrizze a profilt, tárcsázzon, olvassa el a kódot, vizsgálja meg az erőforrást, majd kezdje el a munkát. Minden lépés egy olyan kérdésre válaszol, amelyre az előző nem tudott, és egyik sem alvásra támaszkodik.

Kapcsolódó cikkek