Windows VPN प्रोफ़ाइल फ़ोनबुक में एक प्रविष्टि है, और PowerShell उस प्रविष्टि को संपादित करने का एक तरीका है। इस अंतर से दो विफलताएँ निकलती हैं: एक पहले से साझा की गई कुंजी जो सर्वर तक पहुँचते-पहुँचते बिगड़ चुकी होती है, और एक सर्वर पता जो अद्यतित दिखता है पर वह नहीं है जिस पर अगली सुरंग डायल करेगी। दोनों को देखना आसान होता है जब आप प्रोफ़ाइल को संग्रहीत अवस्था मानें, न कि उस आदेश के रूप में जो आपने चलाया। यह विवरण संपादनों के क्रम में चलता है: बनाना, बदलना, दायरा, फिर से पढ़ना।

शाब्दिक कुंजी से प्रोफ़ाइल बनाएँ

Add-VpnConnection L2TP साझा कुंजी -L2tpPsk के ज़रिए लेता है। PowerShell उस स्ट्रिंग को cmdlet के पाने से पहले संसाधित करता है, और दोहरे उद्धरणों के भीतर डॉलर चिह्न चर का संदर्भ शुरू करता है जबकि backtick एस्केप शुरू करता है। इनमें से कोई भी होने पर कुंजी छोटी होकर, या किसी दूसरे अक्षर के साथ पहुँचती है, और प्रोफ़ाइल गलत रहस्य के साथ सफलतापूर्वक बन जाती है।

फिर विफलता 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

असली रहस्य को shell इतिहास और साझा स्क्रिप्ट से बाहर रखें। चलने के समय स्वीकृत भंडार से पढ़ें और शाब्दिक मान के बजाय चर भेजें, जिससे उद्धरण की समस्या पूरी तरह बच जाती है।

पता बदलें, फिर दोबारा जुड़ें

Set-VpnConnection स्पेस से अलग किए गए पैरामीटर लेता है, असाइनमेंट सिंटैक्स नहीं। -ServerAddress = "203.0.113.10" लिखने से एक अतिरिक्त टोकन चला जाता है, और cmdlet या तो त्रुटि देता है या कुछ ऐसा सहेजता है जो आपका इरादा नहीं था। सही रूप -Name "Office L2TP" -ServerAddress 203.0.113.10 है।

सही सिंटैक्स के साथ भी बदलाव पहले से उठी सुरंग तक नहीं पहुँचता। स्थापित कनेक्शन जिस पते पर डायल किया था उसे डिस्कनेक्ट होने तक रखता है, इसलिए उसी सत्र को जाँचना नए मान के बारे में कुछ साबित नहीं करता। डिस्कनेक्ट करें, संपादित करें, दोबारा जुड़ें, और कनेक्शन विवरण में साथी का पता पुष्टि करें।

कुछ गुण जगह पर बदले नहीं जा सकते। जब cmdlet मना करे, मौजूदा पैरामीटर लिख लें, प्रोफ़ाइल हटाकर सुधरे मानों के साथ दोबारा बनाएँ, और मूल सुरंग तथा प्रमाणीकरण सेटिंग्स बनाए रखें। जिस स्क्रिप्ट को केवल फ़ोन नंबर बदलना है वह सब कुछ फिर बनाने के बजाय RAS API से फ़ोनबुक प्रविष्टि संपादित कर सकती है। कोई भी रास्ता चुनें, बाद में सहेजे गए मानों की पुष्टि करें, आदेश के मौन पर भरोसा न करें।

जानें कि कौन सी फ़ोनबुक संपादित की

प्रति-उपयोगकर्ता प्रोफ़ाइल उस उपयोगकर्ता की नेटवर्क कनेक्शन निर्देशिका में रहती है, और सभी उपयोगकर्ताओं की प्रोफ़ाइल प्रोग्राम डेटा वृक्ष के नीचे मशीन-व्यापी निर्देशिका में रहती है। ये अलग दायरों वाली अलग प्रविष्टियाँ हैं, और एक को संपादित करने पर दूसरी अछूती रहती है।

इसीलिए बदलाव गायब हुआ लग सकता है: स्क्रिप्ट एक खाते में चली और जाँच दूसरे में। जब प्रोफ़ाइल मशीन की हो तो -AllUserConnection इस्तेमाल करें, और दोबारा पढ़ते समय वही दायरा जाँचें।

जाँच से पहले प्रोफ़ाइल दोबारा पढ़ें

Windows से पूछें कि उसने क्या सहेजा, न कि आपने क्या भेजा:

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

उस आउटपुट की इरादे से तुलना करें, फिर नया कनेक्शन शुरू करें। डायल विफल हो तो प्रोफ़ाइल दोबारा बदलने से पहले Event Viewer में RAS क्लाइंट लॉग देखें, क्योंकि लॉग उस चरण का नाम बताता है जो विफल हुआ।

संपादन के दौरान प्रमाणीकरण का ढाँचा अक्षुण्ण रखें। जो आदेश पता बदलता है पर प्रमाणपत्र या EAP कॉन्फ़िगरेशन छोड़ देता है वह ऐसी विफलता देता है जो संपादन से बेमेल लगती है, और काम करती प्रोफ़ाइल पहले निर्यात करने से अनुमान के बजाय बहाल करने के लिए कुछ मिल जाता है।

संबंधित लेख