Geek स्कूल जानें कि कैसे PowerShell के साथ विंडोज को स्वचालित करें
गीक स्कूल के इस संस्करण में, हम आपको शक्तिशाली PowerShell स्क्रिप्टिंग भाषा समझने में मदद करेंगे, जो विंडोज में सही तरीके से बनाई गई है, और आईटी वातावरण में जानने के लिए बेहद उपयोगी है.
जबकि यह श्रृंखला एक परीक्षा के आसपास संरचित नहीं है, पॉवरशेल सीखना एक नेटवर्क प्रशासक के रूप में सबसे महत्वपूर्ण चीजों में से एक है, इसलिए यदि कोई एक चीज है जिसे आप अपने आईटी कैरियर में मदद करना सीखना चाहते हैं, तो यह है। इसके अलावा, यह बहुत मज़ा है.
परिचय
PowerShell सबसे शक्तिशाली स्वचालन उपकरण है जिसे Microsoft को पेश करना है, और इसकी एक शेल और एक स्क्रिप्टिंग भाषा दोनों है.
कृपया ध्यान दें कि यह श्रृंखला पॉवरशेल 3 पर आधारित है, जो विंडोज 8 और सर्वर 2012 के साथ शिप करता है। यदि आप विंडोज 7 चला रहे हैं तो कृपया जारी रखने से पहले पॉवरशेल 3 अपडेट डाउनलोड करें।.
कंसोल और आईएसई से मिलें
PowerShell के साथ बातचीत करने के दो तरीके हैं बॉक्स से बाहर, कंसोल और एकीकृत स्क्रिप्टिंग पर्यावरण - जिसे ISE के रूप में भी जाना जाता है। ISE ने पॉवरशेल 2 के साथ भेजे जाने वाले छिपे हुए संस्करण से बहुत सुधार किया है और एक रन बॉक्स को लाने के लिए Win + R कीबोर्ड संयोजन को दबाकर खोला जा सकता है, फिर powerhell_ise टाइप करके और एंटर दबाएं.
जैसा कि आप आईएसई के खेल को एक विभाजित दृश्य के रूप में देख सकते हैं, ताकि आप आईएसई के निचले आधे हिस्से में परिणाम देखने में सक्षम होने के बावजूद तेजी से स्क्रिप्ट कर सकें। ISE के निचले आधे भाग, जहां आपकी स्क्रिप्ट के परिणाम मुद्रित होते हैं, का उपयोग REPL प्रॉम्प्ट के रूप में भी किया जा सकता है - कमांड प्रॉम्प्ट की तरह। V3 ISE ने अंत में स्क्रिप्ट पेन और इंटरेक्टिव कंसोल दोनों में इंटेलीजेंस के लिए समर्थन जोड़ा.
वैकल्पिक रूप से, आप PowerShell कंसोल का उपयोग करके PowerShell के साथ बातचीत कर सकते हैं, जो कि मैं इस श्रृंखला के अधिकांश के लिए उपयोग कर रहा हूं। PowerShell कंसोल कमांड प्रॉम्प्ट की तरह अधिक व्यवहार करता है - आप बस कमांड दर्ज करते हैं और यह परिणाम निकालता है। Windows PowerShell कंसोल को खोलने के लिए, फिर से रन बॉक्स खोलने के लिए Win + R कीबोर्ड संयोजन को दबाएं और फिर Powerhell टाइप करें और फिर एंटर दबाएं.
इस तरह के REPL संकेत तत्काल संतुष्टि के लिए बहुत बढ़िया हैं: आप एक कमांड दर्ज करते हैं और आपको परिणाम मिलते हैं। जबकि कंसोल इंटैलिसेंस की पेशकश नहीं करता है, यह कुछ टैब पूर्णता नामक एक प्रस्ताव देता है जो बहुत अधिक कार्य करता है - बस एक कमांड टाइप करना शुरू करें और टैब को संभव मैचों के माध्यम से चक्र करने के लिए दबाएं.
हेल्प सिस्टम का उपयोग करना
PowerShell के पिछले संस्करणों में, जब आप Windows स्थापित करते हैं, तो मदद फ़ाइलों को शामिल किया गया था। यह अधिकांश भाग के लिए एक अच्छा समाधान था लेकिन हमें एक महत्वपूर्ण समस्या के साथ छोड़ दिया। जब PowerShell सहायता टीम को मदद फ़ाइलों पर काम करना बंद करना पड़ा, PowerShell डेवलपर्स अभी भी कोडिंग और बदलाव करने में व्यस्त थे। इसका मतलब यह है कि जब PowerShell को भेज दिया गया था, तो मदद फाइलें गलत थीं क्योंकि उनमें नए बदलाव नहीं थे जो कोड में किए गए थे। इस समस्या को हल करने के लिए, PowerShell 3 बॉक्स से बिना किसी मदद के फ़ाइल के साथ आता है और इसमें एक अद्यतन योग्य मदद प्रणाली शामिल है। इसका मतलब यह है कि कुछ भी करने से पहले आप नवीनतम मदद फ़ाइलों को डाउनलोड करना चाहेंगे। पॉवरशेल कंसोल खोलकर और चलाकर आप ऐसा कर सकते हैं:
अद्यतन-सहायता
अपना पहला PowerShell कमांड चलाने के लिए बधाई! सच्चाई यह है कि अपडेट-हेल्प कमांड में केवल इसे चलाने की तुलना में बहुत अधिक विकल्प हैं, और उन्हें देखने के लिए हम कमांड के लिए सहायता देखना चाहेंगे। कमांड के लिए मदद को देखने के लिए आप बस उस कमांड का नाम पास करें जिसे आप गेट-हेल्प कमांड के नाम पैरामीटर के साथ मदद करना चाहते हैं, उदाहरण के लिए:
Get-Help -Name अपडेट-सहायता
आप शायद सोच रहे हैं कि वैसे भी उस सभी पाठ की व्याख्या कैसे करें, मेरा मतलब है कि वाक्यविन्यास अनुभाग के तहत दो बहुत सारी जानकारी क्यों हैं और पूरे स्थान पर इतने सारे कोष्ठक क्यों हैं? पहले चीजें पहले: कारण वाक्यविन्यास अनुभाग के तहत जानकारी के दो ब्लॉक हैं, क्योंकि वे कमांड को चलाने के विभिन्न तरीकों का प्रतिनिधित्व करते हैं। इन्हें तकनीकी रूप से पैरामीटर सेट कहा जाता है और आप एक समय में केवल एक का उपयोग कर सकते हैं (आप विभिन्न सेटों से पैरामीटर नहीं मिला सकते हैं)। उपरोक्त स्क्रीनशॉट में आप देख सकते हैं कि शीर्ष पैरामीटर सेट में एक SourcePath पैरामीटर है, जबकि नीचे नहीं है। यदि आप शीर्ष पैरामीटर सेट (जिसमें SourcePath शामिल हैं) का उपयोग करने का कारण यह है कि यदि आप अपने नेटवर्क पर किसी अन्य मशीन से अपनी मदद फ़ाइलों को अपडेट कर रहे थे जो पहले ही उन्हें डाउनलोड कर चुके थे, जबकि आपको स्रोत पथ निर्दिष्ट करने की आवश्यकता नहीं होगी यदि आप बस Microsoft से नवीनतम फ़ाइलों को हथियाना चाहता था.
दूसरे प्रश्न का उत्तर देने के लिए, एक निश्चित सिंटैक्स है जो फ़ाइलों का पालन करने में मदद करता है और यहाँ यह है:
- एक पैरामीटर नाम और उसके प्रकार के चारों ओर वर्ग कोष्ठक का अर्थ है कि यह एक वैकल्पिक पैरामीटर है और कमांड इसके बिना ठीक काम करेगा.
- पैरामीटर नाम के चारों ओर वर्ग कोष्ठक का अर्थ है कि पैरामीटर स्थितीय पैरामीटर है.
- कोण कोष्ठक में एक पैरामीटर के दाईं ओर की बात आपको डेटा प्रकार बताती है जो पैरामीटर अपेक्षा कर रहा है.
जबकि आपको हेल्प फाइल सिंटैक्स को पढ़ना सीखना चाहिए, अगर आप कभी किसी विशेष पैरामीटर के बारे में अनिश्चित हैं तो बस संलग्न करें -अपने गेट हेल्प कमांड के अंत में जाएं और पैरामीटर सेक्शन तक स्क्रॉल करें, जहां यह आपको प्रत्येक के बारे में थोड़ा और बताएगा पैरामीटर.
गेट-हेल्प -नाम अपडेट-हेल्प -फुल
आखिरी चीज जो आपको सहायता प्रणाली के बारे में जानने की आवश्यकता है कि आप इसे कमांड का पता लगाने के लिए कैसे उपयोग कर सकते हैं, जो वास्तव में बहुत आसान है। आप देखें, PowerShell वाइल्डकार्ड को लगभग कहीं भी स्वीकार करता है, इसलिए गेट-हेल्प कमांड के साथ इनका उपयोग करने से आप आसानी से कमांड खोज सकते हैं। उदाहरण के लिए, मैं Windows सेवाओं से निपटने वाले आदेशों की तलाश कर रहा हूं:
सहायता प्राप्त करें -नाम * सेवा *
निश्चित रूप से, यह सब जानकारी बल्ले से काम नहीं कर सकती है, लेकिन मुझ पर भरोसा करें, समय निकालें और मदद प्रणाली का उपयोग करना सीखें। यह हर समय काम आता है, यहां तक कि उन्नत स्क्रिप्टर्स के लिए भी जो सालों से ऐसा कर रहे हैं.
सुरक्षा
यह सुरक्षा का उल्लेख किए बिना एक उचित परिचय नहीं होगा। PowerShell टीम के लिए सबसे बड़ी चिंता यह है कि PowerShell स्क्रिप्ट किडियों के लिए नवीनतम और सबसे बड़ा हमला बिंदु बन जाता है। उन्होंने यह सुनिश्चित करने के लिए कुछ सुरक्षा उपाय किए हैं कि ऐसा न हो, तो आइए उन पर एक नज़र डालते हैं.
सुरक्षा का सबसे बुनियादी रूप इस तथ्य से आता है कि PS1 फ़ाइल एक्सटेंशन (पावरस्क्रिप्ट लिपि को निरूपित करने के लिए उपयोग किया जाने वाला एक्सटेंशन) PowerShell होस्ट के साथ पंजीकृत नहीं है, जो वास्तव में नोटपैड के साथ पंजीकृत है। इसका मतलब है कि यदि आप किसी फ़ाइल पर डबल क्लिक करते हैं तो यह चलने के बजाय नोटपैड के साथ खुलेगा.
दूसरे, आप स्क्रिप्ट का नाम लिखकर केवल शेल से स्क्रिप्ट नहीं चला सकते हैं, आपको स्क्रिप्ट का पूरा रास्ता बताना होगा। इसलिए यदि आप अपने C ड्राइव पर स्क्रिप्ट चलाना चाहते हैं, तो आपको टाइप करना होगा:
C: \ runme.ps1
या यदि आप पहले से ही C ड्राइव के मूल में हैं तो आप निम्नलिखित का उपयोग कर सकते हैं:
.\ runme.ps1
अंत में, PowerShell के पास एक्ज़ीक्यूशन नीतियाँ नामक कुछ है, जो आपको किसी भी पुरानी स्क्रिप्ट को चलाने से रोकती है। वास्तव में, डिफ़ॉल्ट रूप से, आप किसी भी स्क्रिप्ट को नहीं चला सकते हैं और यदि आप उन्हें चलाने की अनुमति देना चाहते हैं तो अपनी निष्पादन नीति को बदलने की आवश्यकता है। 4 उल्लेखनीय निष्पादन नीतियां हैं:
- वर्जित: यह PowerShell में डिफ़ॉल्ट कॉन्फ़िगरेशन है। इस सेटिंग का मतलब है कि कोई भी स्क्रिप्ट नहीं चल सकती है, चाहे उसके हस्ताक्षर कोई भी हो। केवल एक चीज जो इस सेटिंग के साथ पावरशेल में चलाई जा सकती है वह एक व्यक्तिगत कमांड है.
- AllSigned: यह सेटिंग स्क्रिप्ट को PowerShell में चलने देती है। स्क्रिप्ट में एक विश्वसनीय प्रकाशक से संबद्ध डिजिटल हस्ताक्षर होना चाहिए। विश्वसनीय प्रकाशकों से स्क्रिप्ट चलाने से पहले एक संकेत होगा.
- RemoteSigned: यह सेटिंग स्क्रिप्ट को चलाने की अनुमति देता है, लेकिन इसके लिए आवश्यक है कि इंटरनेट से डाउनलोड की जाने वाली स्क्रिप्ट और कॉन्फ़िगरेशन फ़ाइलों में एक विश्वसनीय प्रकाशक से संबंधित डिजिटल हस्ताक्षर हों। स्थानीय कंप्यूटर से चलने वाले स्क्रिप्ट पर हस्ताक्षर करने की आवश्यकता नहीं है। स्क्रिप्ट चलाने से पहले कोई संकेत नहीं हैं.
- अप्रतिबंधित: यह अहस्ताक्षरित स्क्रिप्ट को चलाने की अनुमति देता है, जिसमें इंटरनेट से डाउनलोड की गई सभी स्क्रिप्ट और कॉन्फ़िगरेशन फाइलें शामिल हैं। इसमें आउटलुक और मैसेंजर की फाइलें शामिल होंगी। यहां जोखिम बिना किसी हस्ताक्षर या सुरक्षा के स्क्रिप्ट चला रहा है। हमने अनुशंसा की कि आप हमें यह सेटिंग कभी नहीं दें.
यह देखने के लिए कि आपकी वर्तमान निष्पादन नीति क्या है, एक PowerShell कंसोल खोलें और टाइप करें:
Get-ExecutionPolicy
इस पाठ्यक्रम और अधिकांश अन्य परिस्थितियों के लिए, दूरस्थ नीति सबसे अच्छी है, इसलिए आगे बढ़ें और निम्नलिखित का उपयोग करके अपनी नीति बदलें.
नोट: इसके लिए एलिवेटेड पावरशेल कंसोल से काम करना होगा.
सेट-एक्ज़ीक्यूशन Policy RemoteSigned
यह सब इस समय के लोगों के लिए है, कल आपको कुछ और PowerShell मज़े के लिए देखें.
अस्वीकरण: पॉवरशेल कमांड के लिए उचित शब्द एक cmdlet है, और अब से हम इस सही शब्दावली का उपयोग करेंगे। इस परिचय के लिए उन्हें आज्ञा देना अधिक उचित लगा.
यदि आपके कोई प्रश्न हैं, तो आप मुझे @taybgibb ट्वीट कर सकते हैं, या बस एक टिप्पणी छोड़ सकते हैं.