2009-05-20 8 views
6

मैं पावरशेल 2.0 that Scott Hanselman did के बारे में पॉडकास्ट सुन रहा था। उस प्रकरण में, उन्होंने PowerShell के लिए कार्यक्षमता का पर्दाफाश करने के लिए अपने आवेदन को बढ़ाने की संभावनाओं के बारे में बात की।अपने आवेदन के भीतर से PowerShell को कार्यक्षमता का खुलासा कैसे करें

अब यह दिलचस्प लगता है। क्या आपने इनमें से कोई भी ऐसा एक्सटेंशन किया है जो आपके एप्लिकेशन में कार्यक्षमता का खुलासा करता है? यदि हां, तो किस तरह की कार्यक्षमता?

संपादित करें: अधिक सटीक होने के लिए: मुझे अपने आवेदन में पावरशेल होस्ट करने में कोई दिलचस्पी नहीं है। मैं एक एपीआई जैसे इंटरफेस के साथ अपना आवेदन खोलने में अधिक रुचि रखता हूं। तो एक पावरशेल प्रदाता वह तकनीक है जो मैं अधिक अंतर्दृष्टि की तलाश में हूं।

उत्तर

4

कस्टम एप्लिकेशन में पावरशेल का लाभ उठाने के कई तरीके हैं। पावरशेल ऑटोमेशन इंजन की सुंदरता यह है कि आपको हैंडलिंग पैरामीटर, आउटपुट स्वरूपण, और अन्य पीआईटीए चीजों का समूह जो आपको स्वयं को संभालना होगा, से निपटने की ज़रूरत नहीं है। PowerShell में पाइप लाइन नीचे एक वस्तु फेंक करने के लिए, आप ProcessRecord विधि ओवरराइड और WriteObject

protected override void ProcessRecord() 
{ 
    // Get the current processes 
    Process[] processes = Process.GetProcesses(); 

    // Write the processes to the pipeline making them available 
    // to the next cmdlet. The second parameter of this call tells 
    // PowerShell to enumerate the array, and send one process at a 
    // time to the pipeline. 
    WriteObject(processes, true); 
} 

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

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

आप अपने आवेदन में पावरशेल को भी होस्ट कर सकते हैं।

MSDN here

पर इन विकल्पों में से सभी तीन पर कुछ अच्छी सूचना प्रदाताओं में रुचि को ध्यान में रखते है, यहाँ पर how to create a PowerShell Provider.

वहाँ डिजाइन के बारे में कुछ विचार विमर्श किया गया है और एक सेट का उपयोग किया गया है कुछ उदाहरण हैं cmdlets का या एक प्रदाता के साथ कुछ बेनकाब करने के लिए। जब आप एक प्रदाता को लागू करते हैं, तो आपको कुछ cmdlets भी मिलते हैं, जैसे गेट-आइटम, न्यू-आइटम, गेट-लोकेशन, सेट-लोकेशन। हालांकि, मुझे पता चला है कि प्रदाता के अतिरिक्त विशिष्ट कार्यों के लिए कुछ cmdlets बहुत उपयोगी हो सकते हैं।

2

यहां पावरहेल के इस तरफ एक अच्छी किताब है (जो अधिकांश पुस्तकों में ज्यादा कवरेज नहीं लेती है)।

Professional Poweshell Programming

इस पुस्तक (और MSDN के लिए कुछ यात्राएं) का उपयोग करना, मैं एक कस्टम PowerShell अप और एक दिन में चलाने की मेजबानी करने में सक्षम था। कुछ दिनों बाद, मेरे पास कस्टम cmdlets थे जो गुई (वृक्षारोपण, ग्रिड, आरेख, मेनू, आदि बनाने के लिए)

2

पावरशेल समर्थन के कुछ स्तर हैं, और बहुत से लोग इस अच्छी तरह से व्याख्या नहीं करते हैं।

  1. .NET कक्षाएं। हां, बिना किसी अतिरिक्त काम किए, PowerShell द्वारा .NET API के साथ कुछ भी एक्सेस किया जा सकता है! लेकिन, आपको अतिरिक्त पावरशेल सुविधाओं की पूरी जानकारी नहीं मिलती है। काम की कम से कम राशि।
  2. cmdlets, स्क्रिप्ट, और/या फ़ंक्शंस के साथ एक PowerShell मॉड्यूल। इसके लिए आपके मौजूदा एपीआई के चारों ओर लपेटने के लिए कुछ PowerShell विशिष्ट कोड लिखने की आवश्यकता होगी। यदि आप इस मार्ग पर जाते हैं, तो आपको नीचे बैठना चाहिए और पावरशेल डिज़ाइन के लिए सर्वोत्तम प्रथाओं को सीखना चाहिए और अपने पावरशेल समर्थन को सोचना चाहिए। यह सही काम करने के लिए आवश्यक है।
  3. पावरशेल प्रदाताओं। प्रदाता एक विशेष मामला हैं, सबकुछ एक प्रदाता नहीं होना चाहिए। आपको वास्तव में यह समझने की ज़रूरत है कि आपकी जानकारी वास्तव में फ़ाइल सिस्टम व्यू में समझ में आता है या नहीं।

यह आपके प्रश्न पर लागू नहीं होता है, लेकिन मैं इसे पूर्णता के लिए जोड़ दूंगा।

  1. होस्टेड पावरशेल। आप अपने ऐप में पावरशेल कोड होस्ट कर सकते हैं, या अपने ऐप से पावरशेल कार्यक्षमता तक पहुंच सकते हैं। यह कुछ स्थितियों में समझ में आता है, लेकिन यह PowerShell समर्थन का एक विशेष मामला भी है।
संबंधित मुद्दे