2011-04-07 13 views
5

अपने PowerShell फ़ंक्शन नाम को अद्वितीय बनाने का सबसे अच्छा तरीका क्या है? वर्जन 1 के बाद मानक वर्ब डैश के बाद और संज्ञा से पहले एक छोटी अनूठी आईडी डालना है। उदाहरण के लिए, मेरे प्रारंभिक के साथ मैं फ़ंक्शन Get-DWServer बना सकता हूं; यह तब तक ठीक है जब तक कोई डेटाटायरहाउस के ऑब्जेक्ट संदर्भ प्राप्त करने के लिए किसी भिन्न मॉड्यूल में कोई फ़ंक्शन नहीं बनाता है और उसी फ़ंक्शन नाम का उपयोग करता है। दो या तीन अक्षरों में पर्याप्त नहीं है लेकिन इससे भी बदतर पढ़ने के लिए बदसूरत हो जाता है।पावरशेल: फ़ंक्शन नाम विशिष्टता सुनिश्चित करने का सबसे अच्छा तरीका?

मैं एक अद्वितीय उपसर्ग * .NET नेमस्पेस के समान होना पसंद करूंगा। यह संगठन के लिए बेहतर है, आंखों पर आसान है और टैब पूर्ण होने के साथ काम करता है। और यह शानदार ढंग से फैलता है ताकि आप इसे DW.Get-Server या DW.Network.Get-Server नाम दे सकें।

ऐसा करने का नकारात्मक पक्ष यह मॉड्यूल आयात/निर्यात-मॉड्यूलमेम्बर के दौरान पावरशेल की उचित क्रिया जांच से पहले चलता है। आप आयात के दौरान DisableName चेकिंग निर्दिष्ट करके इसे प्राप्त कर सकते हैं, लेकिन मुझे आश्चर्य है कि ऐसा करने से यह बेकार है और यदि PowerShell 3 बेहतर समाधान के साथ आता है तो यह बुरा हो सकता है। मुझे पीएस क्रिया purists पता है (क्या कोई है?) शिकायत करेगा कि यह शायद 'खोज बाधा' है, लेकिन मैं एक बेहतर विकल्प के बारे में नहीं सोच सकता।

आप क्या करते हैं?

(* आप मॉड्यूल_नाम \ function_name नोटेशन का उपयोग करके एक निर्यात किए गए फ़ंक्शन का संदर्भ ले सकते हैं लेकिन यह टैब पूर्ण होने के साथ काम नहीं करेगा और अभी भी फ़ंक्शन नाम की अनूठी समस्या की समस्या नहीं है)।

उत्तर

5

मैंने जेफरी स्नोवर (पावरशेल का आविष्कारक) इस बारे में कुछ बार बात की है और उन्होंने इसे एक दुविधा के रूप में वर्णित किया है, समस्या नहीं। एक दुविधा को प्रबंधित किया जाना है लेकिन पूरी तरह से हल नहीं किया जा सकता है। एक समस्या हल हो सकती है। एक पीएस क्रिया "शुद्धवादी" के रूप में मैं कहूंगा कि इसका प्रबंधन करने का सबसे अच्छा तरीका यह है कि आपके संज्ञाओं में 2 या 3 अक्षर उपसर्ग हो। Cmdlets के कई व्यापक रूप से वितरित सेटों के लिए यह अब तक पर्याप्त रहा है। आईई, क्वेस्ट एडी सीएमडीलेट्स बनाम माइक्रोसॉफ्ट के एडी सीएमडीलेट्स। Get-ADUser और get-qaduser प्राप्त करें।

आप एक मॉड्यूल लेने वाली और अपने स्वयं के उपसर्ग का उपयोग करना चाहते हैं, तो आप

import-module mymodule -Prefix myPrefix 

के साथ एक निर्दिष्ट कर सकते हैं मैं जानता हूँ कि यह एक ही चांदी की गोली जवाब नहीं है, लेकिन मैं इसके लिए काम करता है कहेंगे 9 5% स्थितियों।

+0

एक संज्ञा उपसर्ग का उपयोग करने के लिए आज तक मेरे लिए काम किया है लेकिन मेरा दायरा छोटा है: ज्यादातर स्क्रिप्ट अन्य स्क्रिप्ट्स को डॉट-सोर्सिंग करते हैं। चूंकि मैं मॉड्यूल की एक श्रृंखला में सबकुछ माइग्रेट कर रहा हूं, इसलिए मैं एक सुरक्षित, दीर्घकालिक समाधान की उम्मीद कर रहा था। आयात-मॉड्यूल का उपयोग करना -फ्रिक्स एक मॉड्यूल या दो उपभोग करने वाली स्क्रिप्ट के लिए बहुत अच्छा काम करता है लेकिन मॉड्यूल में फ़ंक्शंस अन्य मॉड्यूल में फ़ंक्शन कॉल करते समय मैं एक आसान मानक की तलाश में था। क्रिया-संज्ञा नोटेशन अविश्वसनीय रूप से सहायक है इसलिए मैं इसे लिखना नहीं चाहता; मैं शायद इसके साथ रहूंगा और अपनी उंगलियों को पार करूँगा। – DanW

+1

यदि आप अन्य कार्यों को कॉल करने के तरीके पर मानक की तलाश में हैं, तो मॉड्यूल \ Verb-Noun का उपयोग करें। – JasonMArcher

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