जवाबों:
StackOverflow पर जेफरी स्नोवर (पॉवरशेल डिज़ाइनर) का एक उत्कृष्ट उत्तर है:
सबसे स्पष्ट लाभ: जब तक कोई पाठ आउटपुट (या एक विरासत कमांड) पाइप लाइन में शामिल नहीं होता है, आप पाइप के माध्यम से पाठ को स्थानांतरित नहीं कर रहे हैं, लेकिन .NET फ्रेमवर्क ऑब्जेक्ट्स के उदाहरण, उनके सभी गुणों और विधियों के साथ।
यह एक अधिक अभिव्यंजक और कम अस्पष्ट पाइपलाइन हैंडलिंग की अनुमति देता है जो स्थानीय और भाषा सेटिंग्स (उदाहरण के लिए, तारीख या संख्या स्वरूपों के बारे में सोचते हैं और आप उन्हें सामान्य रूप से स्ट्रिंग के रूप में कैसे मानते हैं) द्वारा पूरी तरह से निर्जन है।
इसका मतलब यह भी है कि आपके पास स्क्रिप्टिंग वातावरण में .NET फ्रेमवर्क क्षमताओं का एक बड़ा सौदा है।
मान के बारे में निर्णय लिए बिना PowerShell के प्रमुख लाभ .Net एकीकरण और असंबद्धता हैं - विंडोज 2008 सर्वर के बाद से इसे डिफ़ॉल्ट रूप से बंडल किया जाता है और इसे 2003 और 2003 R2 पर सर्विस पैक में लोड किया जाता है।
निष्पक्ष होने के लिए, स्क्रिप्टिंग के लिए कई अन्य विकल्प हैं - उदाहरण के लिए पर्ल और पायथन। यदि आप देशी .Net एकीकरण चाहते हैं तो पायथन आपको आयरनपाइथन का उपयोग करने का विकल्प भी देता है। वास्तव में, आयरनपाइथन सिर्फ एक निर्देशिका में छोड़ने से संतोषजनक रूप से स्थापित होगा। आप एक अलग इंस्टॉलेशन चरण की आवश्यकता के बिना इसे एक एप्लिकेशन में तुच्छ रूप से बंडल कर सकते हैं।
पॉवर्सशेल की प्रमुख ताकत दोधारी तलवार है। स्ट्रीमिंग करते समय .net ऑब्जेक्ट्स काफी उपयोगी होते हैं और इसके फायदे हैं, यह फ्रेम के साथ अच्छी तरह से खेलने के लिए घटकों की क्षमता पर बहुत अधिक धारणाएं रखता है। यह वास्तव में काम करने के लिए आपको cmdlets के साथ चीजों को लपेटने की आवश्यकता है। जबकि शाब्दिक आउटपुट कुछ अधिक निम्न स्तर का होता है और इसे पार्स करने की आवश्यकता होती है, यह फ्रेम पर अच्छी तरह से खेलने के लिए घटकों पर कम बोझ डालता है।
समय के साथ, मैं विंडोज इकोसिस्टम के बहुत अधिक देखने की उम्मीद करूँगा (MS और थर्ड-पार्टी दोनों कंपोनेंट्स) cmdlet रैपर के साथ आते हैं ताकि वे Powershell के साथ काम करें। जैसा कि यह होता है कि पॉवर्सशेल के लिए मामला बहुत मजबूत हो जाएगा।
ऐतिहासिक रूप से, प्रशासनिक दृष्टिकोण से विंडोज की प्रमुख पारंपरिक कमजोरियों में से एक इसका खराब स्क्रिप्टिंग समर्थन रहा है। MS ने इसे कई साल पहले पहचाना था और कुछ लंगड़ा प्रयास (जैसे WSH) के बाद Powershell MS की सबसे विश्वसनीय कोशिश है जो अब तक उस कमी को ठीक करने के लिए है।
लाभ: -
कार्य का स्वचालन: - कार्य जैसे कि 1000 मशीनों में उपयोगकर्ता को जोड़ना मैन्युअल रूप से एक कठिन काम है। लेकिन पॉवरशेल की मदद से, आपको बस एक साधारण स्क्रिप्ट लिखने की ज़रूरत है और वह स्क्रिप्ट चलाई जाती है, यह स्वचालित रूप से सभी क्लाइंट को कॉन्फ़िगर करेगा। इस प्रकार यह चरणों को स्वचालित रूप से दोहराकर समय बचाता है। विंडोज पॉवरशेल बैकअप \ पुनर्स्थापना स्क्रिप्ट को विकसित किया जा सकता है और अनुसूचित किया जा सकता है (विंडोज़ टास्क शेड्यूलर के साथ), जबकि केंद्रीय प्रशासन का उपयोग एकल-बैकअप बैकअप और पुनर्स्थापना के लिए किया जाता है। Windows PowerShell में उत्पादन डेटाबेस के बजाय SQL स्नैपशॉट के विरुद्ध चलने का लाभ है। Windows PowerShell कमांड का एक पैरामीटर SQL स्नैपशॉट उत्पन्न करने का कारण होगा, और फिर Windows PowerShell उत्पादन डेटाबेस के बजाय स्नैपशॉट के खिलाफ कार्रवाई चलाएगा। यह उत्पादन वातावरण पर बैकअप ऑपरेशन के संसाधन प्रभाव को कम करेगा। Windows PowerShell के साथ, SharePoint व्यवस्थापकों के पास बैकअप या पुनर्स्थापना के लिए विकल्पों का अधिक दानेदार नियंत्रण होगा।
रीमोटिंग क्षमताओं में सुधार: - महत्व दो गुना है, सबसे पहले, विंडोज 7 डेस्कटॉप पावरशेल कमांड का उपयोग करके सर्वर के साथ संवाद कर सकता है। परिणामस्वरूप विंडोज 7 लैपटॉप के साथ तकनीकी पॉवरशेल स्क्रिप्ट चलाकर अपने सर्वर को दूरस्थ रूप से कॉन्फ़िगर कर सकते हैं। दूसरे, क्लाइंट लॉगऑन स्क्रिप्ट्स जो PowerShell में लिखी गई हैं, जो सर्वर पर रहती हैं, विंडोज 7 पर आसानी से चल सकती हैं। पावरशेल का उपयोग करने के अलावा, हम आसानी से रिमोट मशीनों को नियंत्रित कर सकते हैं, उन पर महत्वपूर्ण कार्य कर सकते हैं और बड़े पैमाने पर इन परिवर्तनों को आसानी से लागू कर सकते हैं। रिमोटिंग नेटवर्क संसाधनों का उपयोग करता है। इसलिए जब हम पावरशेल के साथ काम कर रहे होंगे, हम GUI का उपयोग नहीं कर रहे हैं और इसलिए, एक निश्चित कार्य के लिए आवश्यक बैंडविड्थ कम हो जाता है और नेटवर्क ओवरलोडिंग की समस्या हल हो जाती है।
संगति: - यदि आपके पास किसी कार्य को पूरा करने के लिए एक निर्धारित प्रक्रिया है, तो Windows Powershell का उपयोग करने से यह सुनिश्चित होगा कि आप कभी भी एक चरण से नहीं चूकेंगे, जितना संभव हो उतना स्वचालित कर सकते हैं, और Powershell ने आपको उस सामान के लिए संकेत दिया है जो स्वचालित नहीं हो सकता।
.NET समर्थन: - Powershell .NET फ्रेमवर्क का समर्थन करता है। इसलिए सभी सिस्टम फ़ंक्शंस को आसानी से पॉवरशेल स्क्रिप्ट में जोड़ा जा सकता है और इस प्रकार स्क्रिप्ट को विकसित करने में प्रोग्रामर के लिए एक सहायता है। इस प्रकार वीडीआई के कार्यों को स्वचालित करना बहुत आसान, सरल और कुशल है।
कम मैनुअल काम: - प्रशासक अब केवल स्क्रिप्ट लिखने के द्वारा वर्चुअल मशीनों की सेटिंग्स को दूरस्थ रूप से बना, हटा या संशोधित कर सकता है। उसे व्यक्तिगत पीसी पर जाने और काम पूरा करने की कोई आवश्यकता नहीं है। साथ ही लिखी गई स्क्रिप्ट सभी कंप्यूटरों पर स्वीकार्य हैं। इसलिए प्रशासक को उन्हें बार-बार लिखने की कोई आवश्यकता नहीं है।
पुन: प्रयोज्य: - एक बार किसी विशिष्ट कार्य को करने के लिए लिखी गई लिपियों को बाद के प्रयोजनों के लिए संग्रहीत किया जा सकता है और विभिन्न कार्यों को करने के लिए अन्य लिपियों के साथ भी जोड़ा जा सकता है। इसलिए दोहराए जाने वाले कार्यों को केवल स्क्रिप्ट चलाने के द्वारा बहुत सरल तरीके से किया जा सकता है। यह प्रशासकों को मशीनों को कॉन्फ़िगर करने में समय और पैसा बचाता है।
पाइपलाइनिंग समर्थन: - पावरशेल के लिए सबसे बड़ी जीत यह है कि आप टेक्स्ट को पार्स किए बिना किसी भी चीज़ को पाइप कर सकते हैं। आप नए सेट के इनपुट के रूप में एक कमांड का आउटपुट प्रदान कर सकते हैं और इस प्रकार जटिल कार्यों को हल कर सकते हैं।
Cygwin को Windows के हर संस्करण के लिए उपलब्ध होने की गारंटी नहीं है। पिछली बार मैंने जाँच की थी कि यह 64 बिट मशीनों पर संदिग्ध था। Powershell विंडोज़ के लिए डिफ़ॉल्ट कमांड शेल बन रहा है, और विंडोज मशीन पर सभी संसाधनों तक "मूल" पहुंच प्रदान करेगा।