2009-06-09 12 views
33

मैं पूछ रहा हूं क्योंकि पावरशेल मुझे भ्रमित करता है।PowerShell बनाकर एमएस को हल करने में क्या समस्या आई?

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

ए) कमांड लाइन पर .NET असेंबली पर आपको देखने और पोक करने की अनुमति दें (यह PowerShell का कारण क्यों है अस्तित्व में है?)

बी) स्वचालन के लिए .NET अनुप्रयोगों में होस्ट किया जाना, केडीई में डीसीओपी और कैसे जीनोम कोर्बा का उपयोग कर रहा है।

सी) वास्तविक शेल (बी से संबंधित) के बजाय ".NET स्क्रिप्ट" के रूप में माना जाना चाहिए।

मुझे हमेशा ऐसा लगा है कि विंडोज़ स्वचालन स्क्रिप्ट को बाहर करने का एक सभ्य तरीका खो रहा था। कई मामलों में cmd ​​बहुत सरल है, और डब्ल्यूएसएच बहुत उलझन में है (हालांकि संयोजन सफलतापूर्वक उपयोग किया जा सकता है, मैं एक प्रशंसक नहीं हूं)। जब मैंने पहली बार पावरशेल के बारे में सुना तो मुझे लगा कि विंडोज़ अंततः एक सभ्य खोल प्राप्त कर रहा था जो कई कार्यों के स्वचालन के साथ मदद करने में सक्षम होगा, लेकिन हाल के अनुभव, और मेरे सहकर्मी, मुझे अन्यथा बताएं।

स्पष्ट होने के लिए, मैं इस तथ्य के साथ समस्या नहीं उठाता कि यह .NET पर बनाया गया है, या यह पाठ के बजाय ऑब्जेक्ट पास करता है (मेरी यूनिक्स पृष्ठभूमि के बावजूद:]), और मैं बहस नहीं कर रहा हूं कि PowerShell बेकार है, लेकिन जो मैं देख सकता हूं, उससे समस्या हल नहीं होती है, मुझे उम्मीद थी कि यह बहुत अच्छी तरह से हल होगा। जैसे ही आप .NET/Powershell दुनिया के बाहर कदम उठाते हैं, चीजें आपके लिए अच्छी और आरामदायक होती हैं।

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

+0

आप सीएमडी स्क्रिप्ट बनाम पावरहेल के साथ एक झूठी डिचोटोमी बना रहे हैं, क्योंकि मध्य में जेस्क्रिप्ट और वीबीस्क्रिप्ट आते हैं। – RedFilter

+0

यह सवाल सिर्फ "लौ युद्ध" चिल्लाता है। भी बहुत ही व्यक्तिपरक। मुझे लगता है कि यह जल्द ही बंद हो जाएगा। –

+1

निश्चित रूप से एमएस बनाने के कारण PowerShell को कहीं भी दस्तावेज किया गया है? – Fred

उत्तर

34

पावरशेल वास्तव में कई चीजों के रूप में बनाया गया था: एक परिपक्व और विस्तारणीय स्वचालन मंच और एक आधुनिक प्रशासन खोल।

पूर्व का मुख्य रूप से एक्सचेंज के लिए प्रशासन जीयूआई और हाल के दिनों के अन्य सर्वर उत्पादों के लिए उपयोग किया जाता है। जीयूआई पावरशेल के चारों ओर सिर्फ एक रैपर है जो भारी भारोत्तोलन करता है (जैसे यूनिक्स जीयूआई प्रोग्राम कमांडलाइन प्रोग्राम के लिए एक रैपर के रूप में होते हैं)।

जेफरी स्नोवर (पावरशेल आविष्कारक) elaborates a little कैसे पावरशेल बनाया गया था जिसके साथ लक्ष्य और समस्याएं हल होनी चाहिए।

मेरी राय में, पावरशेल एक खोल के रूप में स्पष्ट रूप से cmd (देखने में आसान) और Windows Script Host के प्रतिस्थापन के रूप में स्पष्ट रूप से लक्षित है (विंडोज स्क्रिप्ट होस्ट को हाल के वर्षों में अधिक ध्यान नहीं मिला, भले ही इसमें .NET के समान अवधारणाएं हों अपने दिन में वापस [एक मंच, सक्रिय स्क्रिप्टिंग के साथ कई भाषाओं], लेकिन .NET माइक्रोसॉफ्ट के साथ मूल रूप से आराम और पुनरुत्थान के लिए रखा गया शायद उनके लिए एक विकल्प नहीं था)।

यह सामान्य अवधारणाओं और विधियों में विंडोज प्रशासन के अधिकांश पहलुओं को एकजुट करता है जिन्हें आपको केवल एक बार सीखना है। इसके अलावा, मेरे लिए PowerShell में पावर ऑब्जेक्ट्स के चारों ओर गुजरने से काफी हद तक उपजी है जो आपको बता सकती है कि जब आप .NET/PowerShell दुनिया से बाहर निकलते हैं तो आपको समस्याएं क्यों मिलती हैं जहां आपको केवल String[] कमांड से मिलता है। लेकिन कई चीजों के लिए आप cmd में बाहरी प्रोग्राम को कॉल करेंगे, एक cmdlet है जो आपके लिए यह करेगा।

9

एक डेवलपर के रूप में, मैं आपको बता सकता हूं कि अब मेरे पास एक फ़ोल्डर में चारों ओर कंसोल अनुप्रयोग 42 परियोजनाओं का एक गुच्छा नहीं है।

एक छोटी कंपनी में एक डेवलपर के रूप में जहां मैं बहुत सारी चीजें करता हूं आईटी (डीबीए, राउटर में हेरफेर, ग्राहकों के लिए स्विच, मॉनिटर और ग्राफ बैंडविड्थ से कॉल विवरण रिकॉर्ड खींचें ...) मैं आपको बता सकता हूं कि पावरशेल विंडोज़ में एक गंभीर रूप से आवश्यक अंतर भरता है और तथ्य यह है कि यह .NET पर बनाया गया है, एक निर्बाध अपग्रेड पथ प्रदान करता है जब पावरशेल पाइपलाइन लाखों पुनरावृत्तियों को संभालने में बहुत धीमी होती है या अधिक स्थायी, दृढ़ता से टाइप किए गए कार्यान्वयन की आवश्यकता होती है।

वैसे भी, मुझे लगता है कि सवाल यह है कि यदि आप को दबाए जाने की ज़रूरत नहीं है तो आप पावरशेल पर क्यों स्विच कर रहे हैं? मेरा मतलब है कि अब यह सीखना अच्छा है क्योंकि यह मूल रूप से माइक्रोसॉफ्ट की सभी चीजों के लिए नया प्रबंधन इंटरफ़ेस है। लेकिन अगर इससे आपको प्रभावित नहीं होता है तो परेशान न हों अगर आपको नहीं लगता कि आप कुछ हासिल कर रहे हैं।

संपादित करें (नीचे टिप्पणी के जवाब में)

ऐसा लगता है कि आप एक exe शुरू करने के लिए नेट प्रक्रिया वर्ग का उपयोग करें और पुन: निर्देशित तो यह फोन करने वाले द्वारा पढ़ा जा सकता यह stdout है करने के लिए कोशिश कर रहे हैं। मैं मानता हूं कि .NET में दर्द है लेकिन सौभाग्य से PowerShell यह सब आपके लिए बहुत सरलता से करता है। परिणाम को कैप्चर करने और इसे अभी भी डिस्प्ले पर लिखने के लिए, यह बहुत आसान है, हालांकि कमांड एक बहुत प्रसिद्ध नहीं है क्योंकि इसका उपयोग अक्सर नहीं किया जाता है। यहां एक उदाहरण दिया गया है:

# I always find it easier to use aliases for external commands 
Set-Alias csc C:\Windows\Microsoft.NET\Framework64\v3.5\csc.exe 

# Create some source file 
Set-Content test.cs @" 
class Program { 
    static void Main() { 
     System.Console.WriteLine("Hello World"); 
    } 
} 
"@ 

# Call CSC.EXE 
# the output of csc.exe is written to results.txt and piped 
# to the host (or select-string if you prefer) 
csc test.cs | Tee-Object -file results.txt 

# Check for errors 
if ($LASTEXITCODE) { 
    # this is where community extensions would come in 
    # handy. powershell 2.0 also has a command to send 
    # mail but in 1.0 you can grab one from poshcode.org 
} 
+0

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

+0

क्या आप इसके लिए एमएसबील्ड का उपयोग कर सकते हैं? मैं एमएसबिल्ड के साथ बहुत परिचित नहीं हूं, सीएसपीआरजेड फाइलों के हाथों के झुकाव के अलावा जो मैंने आईएलएमर्ग में हुक करने के लिए किया है और क्या नहीं। लेकिन ऐसा लगता है कि किसी भी पटकथा भाषा बाकी के रूप में सामान्य के रूप में होने जा रहा है। यदि यह स्वचालन का निर्माण करता है तो आप उसमें बहुत सारे टूल हैं जो उसमें विशेषज्ञ हैं। – Josh

+0

हालांकि जिज्ञासा से, आप किस दर्द में भाग लेते हैं। शायद मैं मदद कर सकता हूँ। मैं पावरशेल न्यूज़ ग्रुप और मेरे ब्लॉग पर काफी सक्रिय हूं इसलिए मैं मदद कर सकता हूं जब मैं कर सकता हूं। मैंने पहली बार पावरशेल के बारे में निराशाजनक पाया लेकिन विशेष रूप से 2.0 सीटीपी 3 के साथ मैंने काफी फैसला किया है कि अगर यह कभी चला गया तो मैं गाड़ी चलाकर अपने गेराज में बैठूंगा और इंजन को मुझे सोने के लिए शुद्ध कर दूंगा। – Josh

1

IMHO मुख्य लाभ कमांड कंसोल में एक समझदार कट और पेस्ट लगता है।

अन्यथा मैं विंडोज पर स्क्रिप्टिंग के लिए ActiveState के ActivePerl का उपयोग करता हूं। यह किसी भी विंडोज शैल स्क्रिप्ट की तुलना में अधिक शक्तिशाली है, और OLE इंटरफ़ेस पूरे Windows API को उपयोग में आसान तरीके से दिखाता है।

+0

cmd में कट या पेस्ट करने के लिए राइट क्लिक करें, यह ctrl + c और ctrl + v नहीं बल्कि बहुत समझदार है। – Copas

+0

कोई भी लिंक जिसका उपयोग मैं उस दृष्टिकोण का मूल्यांकन करने के लिए कर सकता हूं जेम्स? – Fred

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