2009-05-08 11 views

उत्तर

8

मैं एक विस्तार विधि के साथ एक प्रकार पैच करने के लिए एक तरह से के बारे में पता नहीं है। लेकिन यह निश्चित रूप ऐड-सदस्य cmdlet के माध्यम से एक वस्तु पैच करने के लिए

PS> $a = "foo" 
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru 
PS> $a.Foo() 
foobar 

संपादित के बारे में बताएं पूरी तरह से और पूरी तरह से पठनीय PowerShell सिंटेक्स :)

मैं PowerShell प्यार लेकिन यह वास्तव में गुप्त वाक्य रचना किस प्रकार लाता है संभव है समय समय पर।

  • "-इन": यह inputObject के लिए कम है और अनिवार्य रूप से इस
  • "-memberType" के सदस्य जोड़ने का कहना है: आप के तरीकों, टिप्पणी गुण सहित एक क्रम वस्तु को जोड़ सकते हैं मूल्यों के कई अलग अलग प्रकार के होते हैं , कोड विधि, आदि ... देखें "मिल-मदद जोड़ने सदस्यीय -full" एक पूरी सूची
  • "-passthru" के लिए: उद्देश्य यह है कि सिर्फ एक सदस्य था यह करने के लिए जोड़ा लें और इसे नीचे धक्का पाइप लाइन। इस ध्वज के बिना असाइनमेंट $a पर असाइनमेंट और खाली पाइपलाइन असाइन करेगा।
  • काम कॉल मूल रूप से यह सुनिश्चित करना है $a अब विधि आप
+0

+1 पर पाया जा सकता आप एक छोटे से वाक्य रचना पर विस्तृत किया जा सका। $ ए = एड-सदस्य थोड़ा अजीब दिखता है और -और -स्पस्थु स्विच क्या करता है? – BuddyJoe

+0

@Tyndall, टिप्पणियों के साथ अपडेट – JaredPar

+0

धन्यवाद जेरेडपर – BuddyJoe

9

जोड़ा आप एक विधि या संपत्ति आप एक विशेष प्रकार में जोड़ना चाहते हैं है, तो आप PowerShell के अनुकूली प्रकार के माध्यम से एक कस्टम प्रकार एक्सटेंशन बना सकते है प्रणाली।

एक कस्टम प्रकार विस्तार एक एक XML फ़ाइल है कि एक प्रकार के संपत्ति या स्क्रिप्ट विधि का वर्णन करता है और उसके बाद अद्यतन-TypeData cmdlet के माध्यम से PowerShell सत्र में इसे लोड है।

इस का एक महान उदाहरण PowerShell Team Blog - Hate Add-Member? (PowerShell's Adaptive Type System to the Rescue)

+0

हां, यह मूल पोस्टर का उत्तर है। – JasonMArcher

+0

मैंने इस विधि पर ठोकर खाई। निश्चित नहीं। मैं PowerShell बनाम एक्सएमएल में जितना कर सकता हूं उतना रखना चाहता हूं। हममम। मुझे लगता है कि अगर मैं बहुत कुछ करता हूं और बहुत सारे "मोड" करता हूं तो मैं इस विधि का उपयोग करूंगा। – BuddyJoe

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