2009-01-14 14 views
10

मैं वर्तमान में कुछ पावरहेल cmdlets एक साथ रख रहा हूँ। उन्हें बनाना काफी आसान है, लेकिन मुझे नहीं पता कि मैं उन्हें स्वीकार्य तरीके से बना रहा हूं (इसलिए बोलने के लिए)।पावरहेल cmdlets विकास सर्वोत्तम प्रथाओं

क्या कोई दिशानिर्देश/सर्वोत्तम प्रथाएं हैं जिन्हें पावरहेल पाइपलाइन में डेटा पास करने के लिए पालन करना चाहिए? फिलहाल मैं वास्तव में डेटासेट के प्रकार का एक ऑब्जेक्ट आउटपुट कर रहा हूं - यदि कोई cmdlet इसे डाउनस्ट्रीम का उपयोग करना चाहता था तो उन्हें उस डेटासेट में डेटाटेबल्स पर लूप करना होगा, फिर प्रत्येक डेटाटेबल में डेटारो पर लूप करना होगा।

मुझे लगता है कि सवाल है .... क्या मैं इसे करने से किसी को भी बंद कर दूंगा? या क्या मुझे डेटा को आउटपुट करना चाहिए जो मूल रूप से पंक्तियों का एक गुच्छा है?

सभी अग्रिम धन्यवाद

-JT

उत्तर

8

यह उत्पादन जो कुछ भी वस्तु के प्रकार सबसे अच्छा प्रतिनिधित्व करने के लिए क्या तुम बाहर लिख रहे हैं प्रयोग किया जाता है स्वीकार्य है - एक डेटासेट बिल्कुल ठीक है। एकमात्र संभावित सावधानी यह है कि PowerShell का v2 खुद को .NET Framework (जैसे सर्वर कोर पर) के कम संस्करण पर चल रहा है, इसलिए यदि यह आपके cmdlets के लिए एक संभावित परिदृश्य है, तो आपको यह सुनिश्चित करने के लिए कुछ सावधानी बरतनी होगी ऑब्जेक्ट जो आप आउटपुट कर रहे हैं वह प्रत्येक सिस्टम पर मौजूद है जहां आपका cmdlet का उपयोग किया जा सकता है।

जो कुछ भी कहा गया है, जब पाइपलाइन ऑब्जेक्ट्स के संग्रह में सबसे अच्छा काम करती है; एक डेटासेट प्रति संग्रह नहीं है। दूसरे शब्दों में, आप डाउनस्ट्रीम cmdlets को पाइपलाइन के माध्यम से एक समय में एक ऑब्जेक्ट प्राप्त करने में सक्षम होना चाहते हैं, ताकि उन cmdlets को किसी ऑब्जेक्ट के माध्यम से मैन्युअल रूप से गणना करने की आवश्यकता न हो। मैं वास्तव में जो कुछ भी कर रहा हूं उसके बारे में बहुत कुछ नहीं जानता - यह अच्छी तरह से हो सकता है कि डेटासेट पूरी तरह से उपयुक्त है - लेकिन मैं आम तौर पर डेटासेट के माध्यम से एक cmdlet पाश देखना पसंद करता हूं, अपनी कस्टम ऑब्जेक्ट्स बना सकता हूं (ताकि तालिका में प्रत्येक कॉलम एक संपत्ति बन जाता है), और उन वस्तुओं को पाइपलाइन पर आउटपुट करें। यह केवल डाउनस्ट्रीम cmdlets की संख्या को बढ़ाता है जो आप जो निकाल रहे हैं उसका उपभोग कर सकते हैं।

एक सरल परीक्षण अपने cmdlet के आउटपुट को निर्यात-सीएसवी में पाइप करना है। यदि यह काम करता है (और यह शायद डेटासेट के साथ नहीं होगा), तो आप सही बात कर रहे हैं आम तौर पर। अब, आपको एक cmdlet बनाने की आवश्यकता हो सकती है जो डेटासेट को आउटपुट करता है और आप केवल उस आउटपुट के खिलाफ संचालित करने के लिए आपके द्वारा लिखे गए कुछ अन्य cmdlets (जो डेटासेट्स का उपभोग करते हैं) के लिए का इरादा रखते हैं। कुछ गलत नहीं है उसके साथ। अधिकतम लचीलापन एकल ऑब्जेक्ट्स है, हालांकि, यह आपके आउटपुट पर काम करने के लिए सभी PowerShell के कोर cmdlets को सक्षम बनाता है।

उम्मीद है कि मदद करता है।

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