श्रृंखला में पिछले लेखों को पढ़ना सुनिश्चित करें:
- PowerShell के साथ विंडोज स्वचालित करने के लिए जानें
- PowerShell में Cmdlets का उपयोग करना सीखना
- PowerShell में ऑब्जेक्ट्स का उपयोग कैसे करें सीखना
- PowerShell में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना
और पूरे सप्ताह श्रृंखला के बाकी हिस्सों के लिए देखते रहें।
रिमोटिंग क्या है?
आपके सर्वर का थोक प्रबंधन कठिन हो सकता है, और यदि आपको पहले 50 वेबसर्वर पर आईआईएस कॉन्फ़िगरेशन परिवर्तन करना पड़ा है, तो आपको पता चलेगा कि मेरा क्या मतलब है। ये ऐसी स्थितियां हैं जब पावरशेल रिमोटिंग और भाषा की स्क्रिप्टिंग क्षमताओं को बचाव में आ सकता है। HTTP या अधिक सुरक्षित HTTPS का उपयोग करके, PowerShell Remoting आपको अपने नेटवर्क पर रिमोट मशीन पर कमांड भेजने की अनुमति देता है। मशीन तब कमांड चलाती है और आउटपुट को वापस भेजती है, जो बदले में आपकी स्क्रीन पर प्रदर्शित होती है।
चलो तकनीकी जाओ
पावरशेल रीमोटिंग के मूल में एक एकल विंडोज सेवा, विंडोज रिमोट मैनेजमेंट, या विनआरएम सेवा है, जैसा कि यह ज्ञात हो गया है। WinRM का उपयोग करके, आप एक या अधिक सत्र कॉन्फ़िगरेशन (एंडपॉइंट्स के रूप में भी जाना जाता है) सेट कर सकते हैं, जो मूल रूप से उन फाइलें हैं जिनमें आपके रिमोट पावरशेल इंस्टेंस से कनेक्ट होने वाले व्यक्ति को जो अनुभव प्रदान करना है, उसके बारे में जानकारी शामिल है। अधिक विशेष रूप से, आप सत्र कॉन्फ़िगरेशन फ़ाइलों का उपयोग यह निर्धारित करने के लिए कर सकते हैं कि कौन से और कौन से कनेक्ट नहीं हो सकते हैं, कौन सी cmdlets और स्क्रिप्ट वे चला सकते हैं, साथ ही सत्र के संदर्भ में कौन सा सुरक्षा संदर्भ चलाना चाहिए। WinRM सेवा का उपयोग करके, आप "श्रोताओं" भी सेट करते हैं, जो आने वाले PowerShell अनुरोधों को सुनते हैं। ये "श्रोताओं" या तो HTTP या HTTPS हो सकते हैं और आपकी मशीन पर एक ही आईपी पते से बंधे जा सकते हैं। जब आप किसी अन्य मशीन पर पावरशेल कनेक्शन खोलते हैं (तकनीकी रूप से यह डब्लूएस-मैन प्रोटोकॉल का उपयोग करके किया जाता है, जो HTTP पर आधारित है), कनेक्शन इन "श्रोताओं" में से किसी एक से जुड़ता है। "श्रोताओं" तब उपयुक्त सत्र कॉन्फ़िगरेशन फ़ाइल से जुड़े एप्लिकेशन को यातायात भेजने का प्रभारी होते हैं; एप्लिकेशन (आमतौर पर पावरशेल लेकिन यदि आप चाहें तो अन्य होस्टिंग एप्लिकेशन हो सकते हैं) फिर कमांड चलाता है और परिणामों को नेटवर्क पर "श्रोता" के माध्यम से वापस ले जाता है और आपकी मशीन पर वापस आ जाता है।
मुझे दिखाओ कि कैसे
पहली चीज़ जो आपको करने की आवश्यकता होगी वह उस मशीन पर रिमोटिंग सक्षम करने के लिए सक्षम है जिसे आप कनेक्ट करना चाहते हैं। यह निम्नलिखित चलाकर किया जा सकता है:
Enable-PSRemoting
- WinRM सेवा शुरू होती है।
- WinRM सेवा मैन्युअल स्टार्टअप मोड से स्वचालित में बदल जाती है।
- यह एक HTTP श्रोता बनाता है जो आपके सभी नेटवर्क कार्ड से जुड़ा हुआ है।
- यह डब्ल्यूएस-मैन प्रोटोकॉल के लिए एक इनबाउंड फ़ायरवॉल अपवाद भी बनाता है।
- कुछ डिफ़ॉल्ट सत्र विन्यास बनाए जाते हैं
यदि आप विंडोज 7 चला रहे हैं और आपके नेटवर्क कार्ड का स्थान सार्वजनिक पर सेट है, तो PowerShell Remoting को सक्षम करने में विफल रहेगा। इसे ठीक करने के लिए, बस होम या वर्क नेटवर्क स्थान पर स्विच करें। वैकल्पिक रूप से, आप निम्न का उपयोग कर नेटवर्क जांच को छोड़ सकते हैं:
Enable-PSRemoting –SkipNetworkProfileCheck
PowerShell का उपयोग कर किसी अन्य मशीन से कनेक्ट करने के दो तरीके हैं। एक विधि में से एक है, जो एसएसएच का उपयोग करने के समान ही है, और फिर कई तरीकों में से एक है।
PowerShell सत्र का उपयोग करना
PowerShell का उपयोग कर रिमोट मशीन से कनेक्ट करने का पहला तरीका PowerShell सत्र नामक किसी चीज़ का उपयोग कर रहा है। बस एक सत्र डालने के लिए आप रिमोट मशीन पर कमांड को एक इंटरेक्टिव फैशन में चलाने की अनुमति देता है जितना आप अपनी मशीन पर करेंगे। सत्र खोलने के लिए बस निम्न टाइप करें:
Enter-PSSession –ComputerName “Darlah”
Get-ChildItem –Path C:
Invoke-Command का उपयोग करना
रिमोट मशीन पर PowerShell का उपयोग करने का दूसरा तरीका Invoke-Command का उपयोग कर है। Invoke-Command का उपयोग करने का लाभ इस तथ्य से आता है कि आप एक साथ कई मशीनों पर एक ही कमांड निष्पादित कर सकते हैं। जैसा कि आप कल्पना कर सकते हैं, यह विशेष रूप से उपयोगी होता है जब आप कुछ करना चाहते हैं जैसे कि अपने सर्वर से इवेंट लॉग इकट्ठा करना। Invoke-Command निम्न वाक्यविन्यास का पालन करता है:
Invoke-Command -ComputerName Darlah,localhost -ScriptBlock {Get-EventLog Application -Newest 2}
चूंकि कमांड को सभी मशीनों में समानांतर में निष्पादित किया जाता है, इसलिए आपको यह देखने के लिए कुछ तरीका चाहिए कि कौन सी पीसी से दिया गया परिणाम आया है। आप PSComputerName प्रॉपर्टी को देख कर ऐसा कर सकते हैं।
नोट: इस नियम के कुछ अपवाद हैं, उदाहरण के लिए पूर्णांक जैसे अधिकांश आदिम प्रकारों को इसके तरीकों के साथ deserialized किया जा सकता है। रिहाइड्रेशन नामक एक प्रक्रिया भी है जहां कुछ विधियों को deserialized वस्तुओं में वापस जोड़ा जा सकता है। तो बस सावधान रहें और याद रखें कि गेट-सदस्य आपका मित्र है।