2010-09-01 14 views
9

मैं हाल ही में पावरशेल के बारे में बहुत कुछ सुन रहा हूं, और सोच रहा था कि दृश्यों के पीछे WMI का उपयोग कर एक कंसोल एप्लिकेशन या विंडोज सेवा (उदाहरण के लिए) के बजाय PowerShell का उपयोग करने का कोई कारण है या नहीं।पारंपरिक अनुप्रयोगों पर मैं PowerShell का उपयोग कब करूं?

पावरशेल के लाभ और फायदे क्या हैं? ये किसके लिये है?

उत्तर

4

PowerShell चीजें हैं जो एक .NET कंसोल आवेदन कर सकते हैं की बहुत सारी कर सकते हैं, लेकिन यह अभी भी एक पटकथा भाषा है। लेकिन यह बैच फ़ाइल भाषा या वीबीस्क्रिप्ट/जेस्क्रिप्ट से बहुत बेहतर है। इसकी शक्तियों में यूनिक्स-जैसी पाइप और फ़िल्टर का उपयोग करने में सक्षम होना शामिल है लेकिन गूंगा पाठ की बजाय वस्तुओं के साथ। यह सीएलआर और COM ऑब्जेक्ट्स भी बना सकता है और अपनी गुणों और विधियों का आह्वान कर सकता है।

हालांकि, यदि आप कुछ जटिल लिख रहे हैं, तो आप एक संकलित प्रोग्राम लिखने में बेहतर सेवा करेंगे ताकि आपके पास संकलन समय में त्रुटियों को ढूंढने और बेहतर आईडीई होने का लाभ हो। साथ ही, यदि आप PowerShell स्क्रिप्ट को चलाने के लिए चाहते हैं, तो PowerShell उस कंप्यूटर पर स्थापित होना चाहिए जहां आप इसे चला रहे हैं।

+0

तो मैं वास्तव में यह NET अनुप्रयोगों की तुलना में किया जाना चाहिए, लेकिन बैच फ़ाइलों और VBScript के लिए? –

+0

सही, हालांकि यह वास्तव में सरल, अल्पकालिक .NET कंसोल ऐप्स (जैसे, कहें, सरल फ़ाइल मैनिपुलेशन करता है) के लिए एक अच्छा विकल्प भी है। – Jacob

10

PowerShell के शेल, बैश और एर cmd.exe की तरह एक इंटरैक्टिव खोल है। और उन शैलियों की तरह यह एक स्क्रिप्टिंग भाषा (केएसएच, बैश, बैच) का समर्थन करता है। हालांकि PowerShell .NET के शीर्ष पर बनाया गया है और .NET प्रकारों का खुलासा करता है और आपको कई .NET प्रकारों को बनाने और कुशल बनाने में मदद करता है। तो आप स्क्रिप्ट बनाने के लिए PowerShell का उपयोग कर सकते हैं जो एक सामान्य .NET कंसोल ऐप कर सकता है।

छोटे उपयोग कंसोल अनुप्रयोगों को लिखते समय विचार करने के लिए एक कारक यह है कि आप & उपयोग कोड को एक्सई के मौलिक उद्देश्य को प्राप्त करने के लिए आवश्यक कोड बनाम कितना प्रयास करते हैं। मैंने पावरशेल स्क्रिप्ट्स के रूप में बहुत सारी उपयोगिताएं लिखने के लिए स्विच किया है क्योंकि पावरशेल बहुत अच्छी सुविधाओं के साथ एक पैरामीटर पार्सिंग इंजन प्रदान करता है: नाम/पोजिशनल पैरामीटर, आवश्यक/वैकल्पिक पैरामीटर, पैरामीटर के लिए डिफ़ॉल्ट मान, पैरामीटर नामों का आंशिक विनिर्देश इत्यादि।

पावरशेल 2.0 उन्नत कार्यों के साथ इस क्षेत्र (सत्यापन गुण आदि) में और भी अधिक सुविधाएं जोड़ता है। आप अपनी स्क्रिप्ट या उन्नत कार्यों के लिए टिप्पणियों के रूप में आसानी से "मैन पेज" लिख सकते हैं। जबकि मैं एक सी # कंसोल ऐप में फ्लैकी, गैर-मानक (क्या यह - या/या दोनों?) पैरामीटर पार्सिंग कोड के साथ अपने समय के 50-80% को गड़बड़ाना करता था, मैंने पावरशेल को मेरे लिए संभालने दिया। हालांकि मुझे विश्वास है कि जैकब यह कहने में सही है कि निचले स्तर के .NET कोड की आवश्यकता वाले जटिल कार्यों को सही (स्थिर संकलन समय जांच) प्राप्त करना आसान होगा और सी #/वीबी/विजुअल स्टूडियो में डीबग करना आसान होगा।

मुझे बीसीएल में .NET प्रकारों के एक सेट के माध्यम से पावरशेल पैरामीटर पार्सिंग कार्यक्षमता को देखना पसंद आएगा, जैसे कि आप एक कंसोल ऐप लिख सकते हैं और पावरशेल की पार्सिंग कार्यक्षमता प्राप्त कर सकते हैं। बहुत समय पहले मैंने चंगेज नामक ओपन सोर्स घटक का इस्तेमाल किया था, लेकिन मुझे लगता है कि इसे छोड़ दिया गया है। .NET 4.0 बीटा के दौरान एक बिंदु पर, कमांड लाइन पार्सर ढांचे में दिखाई दिया लेकिन आरटीएम से पहले हटा दिया गया था। मुझे नहीं लगता कि इस कमांड लाइन पार्सर के पास PowerShell से कोई संबंध था - और इसमें आईएमओ होना चाहिए। तो शायद यह एक अच्छी बात खींच लिया गया था।

2

Powershell की ताकत सादगी और विशेष रूप से Microsoft उत्पादों के साथ interopterability है। उदाहरण के लिए, एक्सचेंज 2007 और 2010 के अंदर, पावरहेल का उपयोग किये बिना कुछ विशेषताओं को संशोधित करने का कोई तरीका नहीं है। एसपी 2 तक नहीं, क्या आप एक्सचेंज 2007 में भी सार्वजनिक फ़ोल्डरों का प्रबंधन कर सकते हैं।

दूसरा, मुझे बिल्कुल प्यार है, PoSh में सबकुछ एक वस्तु है। CSV फ़ाइल में पढ़ने की तरह बातें कॉलम शीर्षक के रूप में सरल रूप में

$csv = import-csv c:\MyUsers.csv 

अब आप प्रत्येक स्तंभ यह द्वारा सुलभ के साथ एक अनुक्रमित वस्तु है, कर रहे हैं। कई अन्य भाषाओं में आसानी से कुछ नहीं किया गया है, afaik।

$csv[1].UserName

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