VPN pəncərəsini açıb on saniyə yatan skript təxmin edir və bu təxmin hər iki istiqamətdə səhvdir: ya tunel istifadəyə yararlı olmadan kopyalamanı başladır, ya da iş artıq başlaya biləcəyi halda gözləyir. Nəticələrin heç biri autentifikasiyanın bitdiyini demir. Əmrin öz nəticəsindən istifadə et, sonra xidmətə həqiqətən cavab verə biləcəyi sual ver. Bu iki addımın sırası bütün dizayndır.

Əmr əslində nə bildirir

Quraşdırılmış əmr sətri alətinin başa düşdüyü yerli Windows profili üçün rasdial.exe adlandırılmış girişi dial edir və prosesin çıxış kodunu qaytarır. Bu kod dial cəhdini təsvir edir: sıfır həmin profil üçün bağlantının qurulduğunu, sıfırdan fərqli isə kodun göstərdiyi mərhələdə uğursuz olduğunu bildirir. Onu bir təbəqənin nəticəsi kimi oxu, işin nəticəsi kimi yox.

Nəticə ünvan təyini, özəl DNS, əlavə edilmiş marşrutlar və ya müəyyən serverə çıxış icazəsi haqqında heç nə demir. Bunların hamısı uğurlu dialdan sonra baş verir və hər biri hələ də səhv ola bilər. «Qoşulub» ikonası ilə uğursuz kopyalamanın bu qədər tez-tez birgə görünməsinin səbəbi məhz bu boşluqdur.

Nəticəni hər şeydən əvvəl qeyd et

Profilin işi icra edəcək hesab üçün mövcud olduğunu təsdiqləyərək başla, yalnız sınaq apardığın hesab üçün yox:

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

Sonra dial et və kodu dərhal oxu. PowerShell yerli nəticəni $LASTEXITCODE daxilində yalnız növbəti xarici əmr işləyənə qədər saxlayır, ona görə dial ilə yoxlama arasında təsadüfi bir ping oxumaq istədiyin dəyəri məhv edir. Əvvəlcə onu öz dəyişəninə mənimsət, sonra nə edəcəyini qərarlaşdır.

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

Kodu məxfi olmayan xəta mətni ilə birlikdə jurnala yaz, çünki çatışmayan giriş, rədd edilmiş kimlik və fasilə fərqli cavablar tələb edir. Cədvəl ümumi nəticələri növbəti addımla əlaqələndirir.

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

Hazırlıq tunel deyil, resursdur

Dial uğur qazandıqdan sonra işin ehtiyac duyduğu şeyi yoxla. Fayl paylaşımı, API son nöqtəsi və ya verilənlər bazası portu ictimai vebsaytdan daha yaxşı hazırlıq yoxlamasıdır, çünki ictimai sayt istənilən işlək yoldan cavab verir və şəxsi yol haqqında heç nə sübut etmir. Tətbiqin özünün asılı olduğu yoxlamanı seç. Uğurlu TCP bağlantısı marşrutlaşdırma və filtrləmənin açıq olduğunu bildirir və ilk yazma üçün lazım olanların çoxu budur:

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

Cəhdləri məhdudlaşdır və hansı mərhələnin uğursuz olduğunu qeyd et. Rədd edilmiş kimlik skripti dayandırmalıdır, təkrar cəhd dövrəsini qidalandırmamalıdır; hələ görünməyən DNS adı bir neçə qısa təkrar cəhdə layiqdir; heç vaxt açılmayan port müştəridən yuxarıda olan marşrutlaşdırma və ya siyasət problemidir.

Bağlantı iş başlamazdan əvvəl artıq mövcud idisə, ona toxunma. Açmadığın sessiyanı kəsmək istifadəçinin digər işini pozur, ona görə sessiyanın kimə aid olduğunu və hansı bağlanmanın uyğun olduğunu qeyd et.

Profili işi icra edən hesabla məhdudlaşdır

Planlaşdırılmış tapşırıq öz kimliyi və sessiyası altında işləyir və masaüstündə işləyən profil orada görünməyə bilər. Cədvələ güvənməzdən əvvəl görünmə yoxlamasını və dialı tapşırığın hesabı altında təkrarla. Parolu əmr sətrindən kənarda saxla: arqumentlər digər proseslərə görünür və tez-tez jurnallara düşür.

Yerləşdirmə brauzer sorğusu, smart-kart toxunuşu və ya MFA təsdiqi tələb edirsə, bu qarşılıqlı əlaqə dizaynın bir hissəsidir və klaviş vuruşlarını simulyasiya etməklə avtomatlaşdırıla bilməz. Həmin hal üçün dəstəklənən müştəridən istifadə et və insan addımının baş verməsinə imkan ver.

Yekun skriptin forması qısa qalır: profili yoxla, dial et, kodu oxu, resursu yoxla, sonra işə başla. Hər addım əvvəlkinin cavab verə bilmədiyi suala cavab verir və heç biri yuxuya arxalanmır.

Əlaqəli məqalələr