PowerShell में, स्कोपिंग को वैश्विक वातावरण को प्रभावित करने वाली लिपियों में ऑब्जेक्ट्स (चर, उपनाम, कार्य आदि) रखने के लिए माना जाता है। यह कमांड लाइन पर ठीक काम करता प्रतीत होता है, लेकिन आईएसई में नहीं।
यहाँ कंसोल में एक प्रदर्शन है। मैं यह देखने के लिए जाँच करता हूं कि $xवैश्विक दायरे में परिभाषित नहीं किया गया है, की सामग्री दिखाएं ScopeTest.ps1और फिर उसे चलाएं, और अंत में मैं यह देखने के लिए जांचता हूं कि $xक्या फिर से परिभाषित किया गया है। जैसा कि अपेक्षित था, $xकेवल स्क्रिप्ट के दायरे में बनाया और उपयोग किया जाता है और स्क्रिप्ट के समाप्त होने के बाद वैश्विक वातावरण में नहीं रहता है।

ISE में, यह काम करता है अगर स्क्रिप्ट को कंसोल विंडो का उपयोग करके कहा जाता है।

हालाँकि, अगर मैं वास्तव में "रन स्क्रिप्ट" बटन, या F5 का उपयोग करता हूं, तो स्क्रिप्ट के भीतर चर इसे पूरा होने के बाद भी जारी रहेगा।

यह स्क्रिप्ट को लिखना और समस्या निवारण करना थोड़ा मुश्किल बना सकता है, अगर स्क्रिप्ट मान ले कि यह एक स्वच्छ वातावरण से शुरू होगा (यानी: स्क्रिप्ट के भीतर निर्धारित कोई भी चर पहले से मौजूद नहीं होना चाहिए।)। ISE इस तरह से व्यवहार क्यों करता है?
इस प्रश्न का उत्तर "डॉट-सोर्सिंग" का उल्लेख करते हुए विषय पर थोड़ा स्पर्श करता है, लेकिन मैं यहां अधिक गहन स्पष्टीकरण प्राप्त करने की उम्मीद कर रहा हूं। इसके अलावा, यदि दस्तावेज़ इस बात के लिए मौजूद है कि कंसोल से स्क्रिप्ट को ISE में अलग तरीके से क्यों चलाया जाता है, तो एक संदर्भ भी अच्छा होगा।