ملف تعريف VPN في Windows هو مدخل في دفتر هاتف، وPowerShell إحدى طرق تحرير ذلك المدخل. ينتج عن هذا التمييز فشلان: مفتاح مشترك مسبقا يصل إلى الخادم تالفا، وعنوان خادم يبدو محدثا لكنه ليس العنوان الذي سيتصل به النفق التالي. يسهل رؤية كليهما حين تتعامل مع الملف كحالة مخزنة لا كأمر قمت بتشغيله. يسير الشرح بترتيب حدوث التحريرات: الإنشاء، التغيير، النطاق، القراءة المرتجعة.

أنشئ الملف بمفتاح حرفي

يقبل Add-VpnConnection المفتاح المشترك مسبقا لبروتوكول L2TP عبر -L2tpPsk. يعالج PowerShell السلسلة قبل أن يستلمها الأمر، وداخل علامات الاقتباس المزدوجة تبدأ علامة الدولار مرجعا لمتغير بينما تبدأ علامة الاقتباس الخلفي محرف هروب. المفتاح الذي يحتوي على أي منهما يصل أقصر أو بمحرف مختلف، وينشأ الملف بنجاح مع سر خاطئ.

ثم يظهر الفشل عند مصادقة IPsec، حيث يرفض النفق أن يقوم. لهذا يبلغ عن خطأ الاقتباس غالبا كمشكلة من جهة الخادم: الملف موجود، والاسم صحيح، والسر خاطئ بهدوء.

How you write itWhat PowerShell doesResult
"p@ss$word!42"Expands $word as a variableStored key is truncated
Double-quoted with an escape characterConsumes the next character as an escapeOne character disappears
'p@ss$word!42'Keeps the literal charactersStored key matches the secret

علامات الاقتباس المفردة هي الحل، ويجب أن تحيط بالقيمة كاملة. إذا كان المدخل موجودا بمفتاح سيئ، فإن -Force يستبدله، أو احذف الملف وأعد إنشاءه ثم اختبر باتصال جديد:

Add-VpnConnection -Name "Contoso-L2TP" -ServerAddress vpn.contoso.example -TunnelType L2tp -L2tpPsk 'n3w$ecret!2026' -AuthenticationMethod Pap -RememberCredential -Force

أبق السر الحقيقي خارج سجل الصدفة والسكربتات المشتركة. اقرأه وقت التشغيل من المخزن المعتمد ومرر المتغير بدلا من القيمة الحرفية، وهذا يتجنب مشكلة الاقتباس تماما.

غير العنوان ثم أعد الاتصال

يأخذ Set-VpnConnection معاملات مفصولة بمسافات، لا صيغة إسناد. فكتابة -ServerAddress = "203.0.113.10" تمرر رمزا إضافيا، فيخطئ الأمر أو يخزن شيئا لم تقصده. الصيغة الصحيحة هي -Name "Office L2TP" -ServerAddress 203.0.113.10.

حتى مع الصيغة الصحيحة، لا يصل التغيير إلى نفق قائم بالفعل. يحتفظ الاتصال القائم بالعنوان الذي اتصل به حتى ينقطع، لذا لا يثبت اختبار الجلسة نفسها شيئا عن القيمة الجديدة. افصل الاتصال، وحرر، وأعد الاتصال، وتأكد من عنوان النظير في تفاصيل الاتصال.

بعض الخصائص لا يمكن تغييرها في المكان. حين يرفض الأمر، سجل المعاملات القائمة، احذف الملف وأنشئه من جديد بالقيم الصحيحة، وأبق إعدادات النفق والمصادقة الأصلية. السكربت الذي يحتاج إلى تغيير رقم الهاتف فقط يمكنه تحرير مدخل دفتر الهاتف عبر RAS API بدل إعادة إنشاء كل شيء. وأيا كان المسار، تحقق من القيم المخزنة بعد ذلك بدلا من الثقة في صمت الأمر.

اعرف أي دفتر هاتف حررت

يقع ملف المستخدم الواحد في دليل اتصالات الشبكة الخاص بذلك المستخدم، ويقع ملف جميع المستخدمين في الدليل الخاص بالجهاز تحت شجرة بيانات البرامج. إنهما مدخلان مختلفان بنطاقين مختلفين، وتحرير أحدهما يترك الآخر دون مساس.

لهذا قد يبدو التغيير وكأنه تلاشى: شغل السكربت بحساب، والاختبار بحساب آخر. استخدم -AllUserConnection حين يكون الملف ملكا للجهاز، وتحقق من النطاق نفسه عند قراءته مرة أخرى.

اقرأ الملف مرة أخرى قبل الاختبار

اسأل Windows عما خزنه لا عما مررته:

Get-VpnConnection -Name "Office L2TP" | Select-Object Name, ServerAddress, TunnelType, AuthenticationMethod

قارن ذلك الناتج بالقصد، ثم ابدأ اتصالا جديدا. إذا فشل الاتصال، تحقق من سجل عميل RAS في عارض الأحداث قبل تغيير الملف مرة أخرى، لأن السجل يسمي المرحلة التي فشلت.

أبق تصميم المصادقة سليما أثناء التحرير. الأمر الذي يغير العنوان لكنه يسقط الشهادة أو إعداد EAP ينتج فشلا يبدو غير مرتبط بالتحرير، وتصدير الملف العامل أولا يمنحك ما تستعيده بدلا من التخمين.

مقالات ذات صلة