गीक स्कूल: पावरशेल में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना

विषयसूची:

गीक स्कूल: पावरशेल में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना
गीक स्कूल: पावरशेल में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना

वीडियो: गीक स्कूल: पावरशेल में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना

वीडियो: गीक स्कूल: पावरशेल में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना
वीडियो: Vir The Robot Boy | Hindi Cartoon For Kids | Dangerous seven | Animated Series| Wow Kidz - YouTube 2024, अप्रैल
Anonim
गीक स्कूल के इस संस्करण में, हम पाइपलाइन में ऑब्जेक्ट्स स्वरूपण, फ़िल्टरिंग और तुलना करने को देखते हैं।
गीक स्कूल के इस संस्करण में, हम पाइपलाइन में ऑब्जेक्ट्स स्वरूपण, फ़िल्टरिंग और तुलना करने को देखते हैं।

श्रृंखला में पिछले लेखों को पढ़ना सुनिश्चित करें:

  • PowerShell के साथ विंडोज स्वचालित करने के लिए जानें
  • PowerShell में Cmdlets का उपयोग करना सीखना
  • PowerShell में ऑब्जेक्ट्स का उपयोग कैसे करें सीखना

और पूरे सप्ताह श्रृंखला के बाकी हिस्सों के लिए देखते रहें।

डिफ़ॉल्ट स्वरूपण

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

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

notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml

अगर हम नोटपैड फ़ंक्शन का उपयोग करते हैं, तो हम सेवा अनुभाग नियंत्रक प्रकार की खोज करके गेट-सर्विस cmdlet के आउटपुट का विवरण देने वाले अनुभाग को तुरंत छोड़ सकते हैं।

अचानक, आप देख सकते हैं कि हुड के नीचे PowerShell पाइपलाइन में किसी भी ऑब्जेक्ट को स्वरूपित कर रहा है जो ServiceController प्रकार के हैं और तीन कॉलम के साथ एक टेबल बना रहा है: स्थिति, नाम और प्रदर्शन नाम। लेकिन क्या होगा यदि आप जिस प्रकार से काम कर रहे हैं उस फ़ाइल में कोई प्रविष्टि नहीं है, या उस मामले के लिए कोई अन्य प्रारूप फ़ाइल है? वैसे तो, यह वास्तव में काफी सरल है। यदि पाइपलाइन से बाहर आने वाली वस्तु में 5 या अधिक गुण हैं, तो PowerShell सूची में सभी ऑब्जेक्ट गुण प्रदर्शित करता है; यदि इसमें 5 से कम गुण हैं, तो यह उन्हें एक तालिका में प्रदर्शित करता है।
अचानक, आप देख सकते हैं कि हुड के नीचे PowerShell पाइपलाइन में किसी भी ऑब्जेक्ट को स्वरूपित कर रहा है जो ServiceController प्रकार के हैं और तीन कॉलम के साथ एक टेबल बना रहा है: स्थिति, नाम और प्रदर्शन नाम। लेकिन क्या होगा यदि आप जिस प्रकार से काम कर रहे हैं उस फ़ाइल में कोई प्रविष्टि नहीं है, या उस मामले के लिए कोई अन्य प्रारूप फ़ाइल है? वैसे तो, यह वास्तव में काफी सरल है। यदि पाइपलाइन से बाहर आने वाली वस्तु में 5 या अधिक गुण हैं, तो PowerShell सूची में सभी ऑब्जेक्ट गुण प्रदर्शित करता है; यदि इसमें 5 से कम गुण हैं, तो यह उन्हें एक तालिका में प्रदर्शित करता है।

अपने डेटा स्वरूपण

यदि आप किसी ऑब्जेक्ट या प्रकार के डिफ़ॉल्ट स्वरूपण से खुश नहीं हैं, तो आप अपना स्वयं का स्वरूपण रोल कर सकते हैं। ऐसा करने के लिए आपको जानने के लिए तीन cmdlets हैं।

  • प्रारूप-सूची
  • प्रारूप-टेबल
  • स्वरूप वाइड
Image
Image

स्वरूप वाइड बस वस्तुओं का संग्रह लेता है और प्रत्येक वस्तु की एक एकल संपत्ति प्रदर्शित करता है। डिफ़ॉल्ट रूप से, यह एक नाम संपत्ति की तलाश करेगा; यदि आपकी ऑब्जेक्ट्स में नाम संपत्ति नहीं है, तो गुणों को क्रमबद्ध रूप से क्रमबद्ध करने के बाद यह ऑब्जेक्ट की पहली प्रॉपर्टी का उपयोग करेगा।

Get-Service | Format-Wide

जैसा कि आप देख सकते हैं, यह दो कॉलम पर भी डिफ़ॉल्ट है, हालांकि आप दोनों संपत्तियों को निर्दिष्ट कर सकते हैं, साथ ही साथ आप कितने कॉलम प्रदर्शित करना चाहते हैं।
जैसा कि आप देख सकते हैं, यह दो कॉलम पर भी डिफ़ॉल्ट है, हालांकि आप दोनों संपत्तियों को निर्दिष्ट कर सकते हैं, साथ ही साथ आप कितने कॉलम प्रदर्शित करना चाहते हैं।

Get-Service | Format-Wide -Property DisplayName -Column 6

यदि डिफ़ॉल्ट रूप से किसी तालिका के रूप में स्वरूपित किया गया है, तो आप प्रारूप-सूची cmdlet का उपयोग कर इसे हमेशा सूची दृश्य में स्विच कर सकते हैं। चलो Get-Process cmdlet के आउटपुट पर नज़र डालें।
यदि डिफ़ॉल्ट रूप से किसी तालिका के रूप में स्वरूपित किया गया है, तो आप प्रारूप-सूची cmdlet का उपयोग कर इसे हमेशा सूची दृश्य में स्विच कर सकते हैं। चलो Get-Process cmdlet के आउटपुट पर नज़र डालें।
Image
Image

यह सारणी दृश्य वास्तव में इस तरह की जानकारी को बहुत अच्छी तरह से उपयुक्त बनाता है, लेकिन हम दिखाते हैं कि हम इसे सूची रूप में देखना चाहते हैं। हमें बस इतना करना है कि इसे पाइप करें प्रारूप-सूची.

Get-Process | Format-List

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

Get-Process | Format-List –Property *

वैकल्पिक रूप से, आप केवल उन्हीं गुणों का चयन कर सकते हैं जिन्हें आप चाहते हैं।
वैकल्पिक रूप से, आप केवल उन्हीं गुणों का चयन कर सकते हैं जिन्हें आप चाहते हैं।

Get-Process | Format-List –Property name,id

Image
Image

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

Get-Process | Format-Table name,id –AutoSize

Image
Image

फ़िल्टरिंग और तुलना करना

ऑब्जेक्ट-आधारित पाइपलाइन का उपयोग करने के बारे में सबसे अच्छी चीजों में से एक यह है कि आप कहां ऑब्जेक्ट cmdlet का उपयोग कर किसी भी स्तर पर पाइपलाइन से वस्तुओं को फ़िल्टर कर सकते हैं।

Get-Service | Where-Object {$_.Status -eq “Running”}

जहां वस्तु वास्तव में बहुत सरल है का उपयोग करना। $ वर्तमान पाइपलाइन ऑब्जेक्ट का प्रतिनिधित्व करता है, जिससे आप उस संपत्ति को चुन सकते हैं जिसे आप फ़िल्टर करना चाहते हैं। यहां, केवल वे ऑब्जेक्ट्स रख रहे थे जहां स्थिति संपत्ति चल रही है। फ़िल्टरिंग स्क्रिप्ट ब्लॉक में आप कुछ तुलना ऑपरेटर का उपयोग कर सकते हैं:
जहां वस्तु वास्तव में बहुत सरल है का उपयोग करना। $ वर्तमान पाइपलाइन ऑब्जेक्ट का प्रतिनिधित्व करता है, जिससे आप उस संपत्ति को चुन सकते हैं जिसे आप फ़िल्टर करना चाहते हैं। यहां, केवल वे ऑब्जेक्ट्स रख रहे थे जहां स्थिति संपत्ति चल रही है। फ़िल्टरिंग स्क्रिप्ट ब्लॉक में आप कुछ तुलना ऑपरेटर का उपयोग कर सकते हैं:
  • ईक (समान)
  • neq (बराबर नहीं)
  • gt (ग्रेटर थान)
  • जीई (ग्रेटर थान या बराबर)
  • लेफ्टिनेंट (कम से कम)
  • ले (कम से कम या बराबर)
  • जैसे (वाइल्डकार्ड स्ट्रिंग मैच)

एक पूर्ण सूची और अधिक जानकारी about_comparison वैचारिक सहायता फ़ाइल में देखी जा सकती है, हालांकि इसे कहां-ओबेक्ट वाक्यविन्यास में उपयोग करने में कुछ समय लगता है। यह सब इस समय के लिए है!

सिफारिश की: