गीक स्कूल सीखना कैसे PowerShell में वस्तुओं का उपयोग करें
वस्तुओं को समझना पावरस्ले को "प्राप्त" करने के लिए मूलभूत अवधारणाओं में से एक है। जैसे ही हम वस्तुओं का पता लगाते हैं, वे हमारे साथ जुड़ते हैं और वे कैसे पावरस्ले को आज किसी अन्य शेल से बेहतर बनाते हैं.
श्रृंखला के पिछले लेखों को अवश्य पढ़ें:
- PowerShell के साथ विंडोज को स्वचालित करने का तरीका जानें
- PowerShell में Cmdlets का उपयोग करना सीखना
और पूरे सप्ताह बाकी श्रृंखला के लिए बने रहें.
वस्तुओं
क्या आपने कभी सोचा है कि बैश जैसे पारंपरिक लिनक्स शेल या यहां तक कि विरासत कमांड प्रॉम्प्ट के अलावा पावरशेल क्या सेट करता है? उत्तर वास्तव में सरल है: पारंपरिक गोले आउटपुट टेक्स्ट, जो स्वरूपण और फ़िल्टरिंग जैसी चीजों को करना मुश्किल बनाता है। बेशक, आपको काम पूरा करने में मदद करने के लिए उपकरण हैं (sed और grep दिमाग में आते हैं), लेकिन दिन के अंत में, यदि आप किसी भी तरह का भारी पाठ पार्स करना चाहते हैं, तो आपको नियमित अभिव्यक्ति की तरह जानने की आवश्यकता है अपने हाथ के पीछे.
PowerShell अंतर्निहित .Net ढांचे का लाभ उठाता है और पाठ के बजाय वस्तुओं का उपयोग करके एक अलग दृष्टिकोण लेता है। वस्तुएं सिर्फ किसी चीज का प्रतिनिधित्व हैं। वे उन्हें उपयोग करने के लिए भागों और कार्यों का एक संग्रह है। आइए एक साइकिल के हिस्सों पर एक नज़र डालें और हम उनका उपयोग कैसे कर सकते हैं.
.Net में ऑब्जेक्ट्स दो छोटे अंतरों को छोड़कर बहुत समान हैं: "पार्ट्स" कहलाते हैं गुण और "निर्देश" कहा जाता है तरीकों. यदि हम किसी वस्तु के रूप में एक Windows सेवा का प्रतिनिधित्व करना चाहते थे, तो हम यह तय कर सकते हैं कि तीन गुणों का उपयोग करके इसका वर्णन करना उचित है: सेवा का नाम, राज्य और विवरण। हमें सेवा के साथ बातचीत करने की भी आवश्यकता है, इसलिए हम ऑब्जेक्ट को एक स्टार्ट, स्टॉप और पॉज़ विधि दे सकते हैं.
आप किसी वस्तु के गुणों और विधियों को गेट-मेंबर cmdlet में पास करके देख सकते हैं। एक PowerShell cmdlet आउटपुट वाली वस्तुएं .Net फ्रेमवर्क से काफी हद तक अंतर्निहित प्रकार की होती हैं, लेकिन यदि आप C # जैसी भाषा का उपयोग करने या PSObject प्रकार का उपयोग करने के लिए अपनी स्वयं की ऑब्जेक्ट बना सकते हैं.
पाइपलाइन
एक पाइपलाइन के साथ बहुत सारे लिनक्स के गोले हैं, जो आपको पाठ भेजने की अनुमति देता है कि एक कमांड पाइपलाइन में अगले कमांड के इनपुट के रूप में आउटपुट करता है। PowerShell आपको उन वस्तुओं को लेने की अनुमति देकर अगले स्तर तक ले जाता है जो एक cmdlet आउटपुट देती हैं और उन्हें पाइपलाइन में अगले cmdlet में इनपुट के रूप में पास करती हैं। ट्रिक यह जान रही है कि cmdlet किस प्रकार की वस्तु देता है, जो गेट-मेंबर cmdlet का उपयोग करते समय वास्तव में आसान है.
जाओ-सेवा | Get-सदस्य
इस लेख के दायरे से परे कारणों के लिए, गुणों और विधियों को संयुक्त रूप से वर्ग के सदस्य कहा जाता है, जो बताता है कि आप किसी ऑब्जेक्ट के सभी तरीकों और गुणों की सूची प्राप्त करने के लिए गेट-मेंबर cmdlet का उपयोग क्यों करते हैं। हालाँकि, गेट-सदस्य cmdlet जानकारी का एक अन्य महत्वपूर्ण टुकड़ा, अंतर्निहित ऑब्जेक्ट प्रकार भी लौटाता है। उपरोक्त स्क्रीनशॉट में, हम देख सकते हैं कि Get-Service प्रकार की वस्तुएँ लौटाती है:
System.ServiceProcess.ServiceController
चूंकि PowerShell वस्तुओं और पाठ से संबंधित है, इसलिए सभी cmdlets को पाइपलाइन [1] का उपयोग करके एक साथ नहीं जोड़ा जा सकता है। इसका मतलब है कि हमें एक cmdlet खोजने की आवश्यकता है जो पाइपलाइन से System.ServiceProcess.ServiceController ऑब्जेक्ट को स्वीकार करना चाहता है.
Get-Command -ParameterType System.ServiceProcess.ServiceController
ध्यान दें कि स्टॉप-सर्विस नामक एक cmdlet है; चलो इसके लिए मदद पर एक नज़र डालते हैं.
Get-Help -Name Stop-Service
ऐसा लगता है कि InputObject पैरामीटर इनपुट के रूप में ServiceController वस्तुओं की एक सरणी लेता है। आमतौर पर, यदि आप InputObject नामक पैरामीटर देखते हैं, तो यह पाइपलाइन से इनपुट स्वीकार करेगा, लेकिन यह सुनिश्चित करने के लिए कि उस पैरामीटर के लिए पूर्ण सहायता पर एक नज़र डालें.
Get-Help -Name Stop-Service -Full
हमारा शक सही था। तो इस बिंदु पर हम निम्नलिखित जानते हैं:
- गेट-सर्विस रिटर्न सर्विसकंट्रोलर ऑब्जेक्ट्स
- Stop-Service में एक पैरामीटर होता है जिसे InputObject कहा जाता है जो एक या अधिक ServiceControllers को इनपुट के रूप में स्वीकार करता है.
- InputObject पैरामीटर पाइपलाइन इनपुट को स्वीकार करता है.
इस जानकारी का उपयोग हम निम्नलिखित कर सकते हैं:
Get-Service -Name 'Apple Mobile Device' | सेवा रोकें
इस बार के लोगों के लिए बस इतना ही। अगली बार हम देखते हैं कि हम पाइपलाइन में वस्तुओं को कैसे प्रारूपित, फ़िल्टर और तुलना कर सकते हैं.
घर का पाठ
- ऑब्जेक्ट पाइपलाइन पर पढ़ें
यदि आपके कोई प्रश्न हैं तो आप मुझे @taybgibb ट्वीट कर सकते हैं, या बस एक टिप्पणी छोड़ सकते हैं.