Windows VPN کو فعال رکھیں: منقطع ہونے کے واقعہ پر rasdial چلائیں
RasClient 20226 اور 20227 گرنے کی نشان دہی کرتے ہیں؛ 631 کا مطلب ہے کہ کسی شخص نے یہ کیا۔ پہلے دو پر rasdial چلائیں، ایک اسناد محفوظ رکھیں، اور ایگزٹ کوڈ پڑھیں۔
Windows اپنے VPN کلائنٹ کے لیے دوبارہ کال کرنے کی کوئی پالیسی فراہم نہیں کرتا، اس لیے آدھی رات کو ٹوٹنے والا کنکشن ناشتے کے وقت بھی بند رہتا ہے۔ وہ مقررہ کام جو منقطع ہونے پر نظر رکھتا ہے اور rasdial چلاتا ہے، تیسرے فریق کے کلائنٹ کے بغیر یہ خلا پر کرتا ہے۔ کام آپریٹر کی طرح برتاؤ کرے یا لوپ کی طرح، یہ تین تفصیلات پر منحصر ہے: یہ کن واقعات سے میل کھاتا ہے، کون سی اسناد دیکھ سکتا ہے، اور نتیجے کے ساتھ کیا کرتا ہے۔ تینوں میں سے کوئی بھی مشکل نہیں، اور ان میں سے کوئی ایک چھوٹ جانا ہی ایسا کام بناتا ہے جو ہمیشہ کال کرتا رہتا ہے۔
ٹائمر غلط محرک کیوں ہے
ٹائمر ٹنل بند ہو یا نہ ہو، اپنے ہی شیڈول کے مطابق کال کرتا ہے۔ اس سے ایسی کوششیں بنتی ہیں جن کی کسی کو ضرورت نہیں تھی، اور کام کے سیشن کے دوران کوشش اسے روک سکتی ہے۔ واقعہ محرک صرف اسی وقت فعال ہوتا ہے جب کنکشن کی حالت بدلتی ہے، جو سستا اور سمجھنا آسان ہے۔ واقعہ وجہ بھی ساتھ لاتا ہے، اور وجہ ہی نیٹ ورک کی ناکامی کو جان بوجھ کر منقطع کرنے والے شخص سے الگ کرتی ہے۔
یہی فرق مفید کام اور ہر شام صارف سے لڑنے والے کام کے درمیان فرق ہے۔ یہ وہی حصہ ہے جو عام طور پر صرف عمل بیان کرنے والی ترکیبوں میں غائب ہوتا ہے۔
واقعات کا جوڑا، اور جسے دبانا ہے
Remote Access Service کلائنٹ لائف سائیکل کے ریکارڈ RasClient فراہم کنندہ کے تحت Application لاگ میں لکھتا ہے۔ 20226 ختم شدہ کنکشن اور 20227 ناکام کوشش کی نشان دہی کرتا ہے، اس لیے دونوں میں سے کوئی بھی نئی کال کا جواز بن سکتا ہے۔ کام میں باقی سب کچھ ان دو شناخت کنندگان کے درست میل پر منحصر ہے۔ یہ برسوں سے مستحکم ہیں، اسی لیے ان پر بنی ترکیبیں اب بھی گردش میں ہیں، لیکن فراہم کنندہ یا شناخت کنندگان کا نام بدلنے والی تعمیر کوئری کو کچھ بھی واپس نہ کرنے دیتی ہے۔ ہر فیچر اپ ڈیٹ کے بعد ثبوت کا مرحلہ دوبارہ چلائیں، کام کے بند ہونے کا انتظار کرنے کے بجائے۔
ایک اختتام کو خارج کرنا ہے۔ غلطی 631 کا مطلب ہے کہ صارف نے پورٹ منقطع کیا، اور اس لمحے دوبارہ کال کرنا ابھی جان بوجھ کر نیٹ ورک بدلنے والے شخص سے لڑنا ہے۔ اخراج کو اسکرپٹ میں نہیں، محرک کے فلٹر میں رکھیں، تاکہ کام بالکل شروع نہ ہو۔ یہ صرف ایک واقعہ آئی ڈی پر لاگو ہونا چاہیے، کیونکہ EventData شرط صرف اسی وقت میل کھاتی ہے جب نامزد عنصر موجود ہو، اور مشترکہ شق دوسری آئی ڈی کے ہر واقعہ کو خاموشی سے گرا دیتی۔ فلٹر لکھنے سے پہلے کسی حقیقی ریکارڈ سے عنصر کا نام پڑھیں:
Get-WinEvent -LogName Application -MaxEvents 5 -FilterXPath "*[System[Provider[@Name='RasClient'] and EventID=20226]]" | Select-Object -First 1 -ExpandProperty ToXml
XML اس ریکارڈ میں Data کے درست نام دکھاتا ہے۔ ErrorCode عام ہجوں ہے، اور کچھ اور استعمال کرنے والے ریکارڈ کے لیے نیچے فلٹر میں وہ نام بدلنا ہوگا۔
<QueryList><Query Id="0" Path="Application"><Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] and (EventData[Data[@Name='ErrorCode'] != '631'] or System[EventID=20227])</Select></Query></QueryList>
اسے محرک کے حسب ضرورت فلٹر میں چسپاں کریں، اور محرک بننے سے پہلے اسے کوئری کے طور پر ثابت کریں۔ وہی XPath PowerShell سے زندہ لاگ کے خلاف چلتا ہے، جو یہ دیکھنے کا سستا طریقہ ہے کہ یہ کس سے میل کھاتا ہے، جبکہ کام کی تاریخ ابھی شامل نہیں ہے۔
Get-WinEvent -LogName Application -MaxEvents 40 -FilterXPath "*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] and (EventData[Data[@Name='ErrorCode'] != '631'] or System[EventID=20227])" | Select-Object TimeCreated,Id,Message
خاموشی سے کسی سے میل نہ کھانے والا محرک بالکل ایسا ہی دکھتا ہے جیسے چل کر ناکام ہونے والا کام۔ دونوں "آٹومیشن کام نہیں کرتی" کے طور پر ظاہر ہوتے ہیں، اور کوئی نہیں بتاتا کہ کون سا آدھا حصہ غائب ہے۔ پہلے کوئری کا آؤٹ پٹ جانچیں، کیونکہ یہ ایک ہی قدم میں دونوں صورتیں الگ کرتا ہے۔
کال ناکام ہوتی ہے کیونکہ پاس ورڈ ٹائپ کرنے والا کوئی نہیں
عمل کنکشن کے نام کے ساتھ rasdial چلاتا ہے۔ جب پروفائل میں کوئی محفوظ شدہ اسناد نہ ہوں، کال فوراً ناکام ہو جاتی ہے کیونکہ اشارے کا جواب دینے والا کوئی نہیں۔ درست طریقے سے محرک ہونے والا کام کچھ بھی نظر آنے والا نہ کرے، اس کی یہی سب سے عام وجہ ہے، اس لیے محرک کو چھونے سے پہلے یہ جانچیں۔ کمانڈ پرامپٹ سے ہاتھ سے کال کرنا اسناد کے مسئلے کو شیڈولنگ کے مسئلے سے الگ کرتا ہے۔
اسناد کو ایک بار اسی اکاؤنٹ کے تحت محفوظ کریں جس کے تحت کام چلے گا، اور اس اکاؤنٹ کو ڈیزائن کا حصہ بنائیں۔ SYSTEM کے طور پر چلنے والا کام آپ کے انٹرایکٹو اکاؤنٹ کی محفوظ کردہ اسناد نہیں پڑھ سکتا، اور نہ کسی اور کے طور پر چلنے والا کام۔ نام بھی پروفائل سے بالکل میل کھانا چاہیے، صارف کے میدان میں کسی بھی ڈومین سابقے سمیت۔
rasdial
rasdial "Office VPN"
(Start-Process rasdial -ArgumentList '"Office VPN"' -Wait -PassThru -NoNewWindow).ExitCode
پہلا کمانڈ Windows کے جانے ہوئے نام گنواتا ہے۔ دوسرا محفوظ شدہ اسناد استعمال کرتے ہوئے نام سے کال کرتا ہے، اور تیسرا وہ شکل ہے جو PowerShell عمل کو استعمال کرنی چاہیے، کیونکہ یہ انتظار کرتا ہے اور ایسی قدر واپس دیتا ہے جو کام ریکارڈ کر سکے۔
ونڈو کے بجائے ایگزٹ کوڈ پڑھیں
بغیر انتظار کے عمل شروع کرنے والا کام عمل کے موجود ہوتے ہی کامیابی کی اطلاع دیتا ہے۔ ایسی کال کے لیے جو ایک سیکنڈ بعد ناکام ہو سکتی ہے، یہ فیصلہ بیکار ہے۔ ایگزٹ کوڈ کا انتظار کرنا عمل کو حقیقی نتیجہ بنا دیتا ہے۔ کام کی تاریخ تنہا صرف یہ دکھاتی ہے کہ عمل شروع ہوا، کبھی یہ نہیں کہ ٹنل اوپر آئی۔
ہر چلنے پر وقت کے نشان کے ساتھ قدر لاگ کریں۔ بندش کے بعد ایک ناکامی عام ہے، جبکہ ایک ہی کوڈ کے ساتھ لگاتار تین ناکامیاں نیٹ ورک کی طرف نہیں، اسناد یا پروفائل کی طرف اشارہ کرتی ہیں۔ یہی نمونہ تاریخ کو پڑھنے کے قابل بناتا ہے۔
بیمے کے طور پر مختصر تکرار کا وقفہ شامل کریں، اور واضح کریں کہ یہ واقعہ محرک کے ساتھ کیسے تعامل کرتا ہے۔ پانچ منٹ تک ہر منٹ تکرار اس وقت دوسری کوشش فراہم کرتی ہے جب انٹرنیٹ ٹنل کے ساتھ واپس آیا، اور ترتیبات میں، "اگر کام پہلے ہی چل رہا ہو تو درج ذیل اصول لاگو ہوتا ہے"، کام "نیا نمونہ شروع نہ کریں" چاہتا ہے تاکہ تکرار چلتی کال پر نہ چڑھے۔ اس ترتیب کے بغیر دو rasdial عمل ایک ہی پورٹ کے لیے مقابلہ کر سکتے ہیں اور دوسرا کسی مفید وجہ کے بغیر ناکام ہو جاتا ہے۔
بحالی کا راستہ ثابت کریں
دونوں سمتوں کو جان بوجھ کر جانچیں۔ ہاتھ سے منقطع کریں اور تصدیق کریں کہ دوبارہ کال نہیں ہوتی، پھر نیٹ ورک اڈاپٹر غیر فعال کریں اور تصدیق کریں کہ لنک واپس آنے پر کام فعال ہوتا ہے۔ یہ دو جانچیں دبانے کے اصول اور ناکامی کی حقیقی صورت کو ڈھانپتی ہیں، اور کوئی اور یہ نہیں کرتا۔
اس کے بعد کنکشن آئیکن کے بجائے کام کی تاریخ پڑھیں۔ تاریخ درج کرتی ہے کہ کام کب چلا، کون سا اکاؤنٹ استعمال ہوا اور عمل نے کیا واپس کیا، اور اگلے مہینے وہی مشین دوبارہ گرنے پر یہی ثبوت درکار ہوتا ہے۔