2012-12-04 8 views
6

अगर मैं डॉट sourced हैमैं PowerShell में एक डॉट सोर्स की गई स्क्रिप्ट को कैसे हटा सकता हूं?

. "\foo-bar.ps1" 

कैसे मैं सभी की सूची प्राप्त देख सकते हैं डॉट sourced स्क्रिप्ट और मैं कैसे निकाल सकते हैं "foo-बार/PS1" स्क्रिप्ट डॉट sourced से?

+0

यह अल्कोहल को कम करने जैसा है: आप केवल परिणाम को कम कर सकते हैं, लेकिन पूरी तरह से अनदेखा नहीं कर सकते हैं। आदेश undrink करने के लिए एक नहीं पीना चाहिए या PowerShell मामले में, बस लाइन जहां डॉट स्रोत – maoizm

उत्तर

11

जहाँ तक मुझे पता है, आप एक स्क्रिप्ट डॉट sourced नहीं निकाल सकते। यही कारण है कि मॉड्यूल जहां PowerShell 2.0 में पेश किया गया। देखें About_Modules

आप एक मॉड्यूल के लिए अपने "foo-bar.ps1" में बदल सकते हैं। एक मॉड्यूल आयात किया जा सकता है (आयात-मॉड्यूल) और हटाया गया (निकालें-मॉड्यूल)।

5

मैं @JPBlanc साथ सहमत हैं कि आप सामान्य में डॉट के सहयोग से स्क्रिप्ट नहीं निकाल सकते हैं, लेकिन अपनी खुद की कोडिंग सम्मेलनों पर निर्भर करता है आप अभ्यास में इस ऐसा करने में सक्षम हो सकता है। के बारे में

पहले एक जोड़े टिप्पणियों कारण है कि आप सामान्य में ऐसा नहीं कर सकते:

(1) PowerShell एक अलग इकाई के रूप में एक डॉट sourced स्क्रिप्ट का बोध भी नहीं है। एक बार जब आप इसे डॉट-स्रोत करते हैं, तो इसकी सामग्री आपके वर्तमान संदर्भ का हिस्सा बन जाती है, जैसे कि आपने मैन्युअल रूप से प्रॉम्प्ट पर प्रत्येक पंक्ति टाइप की थी। इस प्रकार आप उसे निकाल नहीं सकते, क्योंकि यह वास्तव में मौजूद नहीं है :-)

(2) के रूप में (1) आप डॉट sourced लिपियों की सूची नहीं कर सकते हैं बहुत इसी कारण से।

अब, वैसे भी यह करने के लिए:

सामग्री और अपने डॉट sourced स्क्रिप्ट की परंपराओं के आधार पर है, हालांकि, आप आप क्या चाहते हैं ऐसा करने में सक्षम हो सकता है। हैं, उदाहरण के लिए, स्क्रिप्ट बस तीन कार्यों को परिभाषित करता है - फोन इन func-a, func-b, और func-c --then आप कर सकते हैं दोनों सूची और उन कार्यों को हटा दें।

सूची आत्मसात कार्य:

Get-ChildItem function:func-* 

निकालें आत्मसात कार्य:

Remove-Item function:func-* 
3

आप sourced कार्यों निकाल सकते हैं अगर आप डॉट sourced फ़ाइल का रास्ता पता है:

Get-ChildItem function: | 
Where-Object {$_.ScriptBlock.File -eq $path} | 
Remove-Item 
मूल रूप से
+0

सुनिश्चित नहीं हैं कि अलग अलग बातें पुनश्च v5 से हैं, लेकिन मैं 'उपयोग कर सकते हैं निकालें-मद समारोह में पहली बार प्रतीक के रूप में' # 'डाल में : \ Get-WMIReboot' जहां 'Get-WMIReboot' मेरी फ़ंक्शन का नाम हटाया जा रहा है। 'डीआईआर फ़ंक्शन' का उपयोग करके फ़ंक्शन की पुष्टि हो गई है – user4317867

संबंधित मुद्दे