गीक स्कूल लर्निंग फॉर्मेटिंग, फ़िल्टरिंग और पॉवरशेल में तुलना
गीक स्कूल के इस संस्करण में, हम पाइपलाइन में ऑब्जेक्ट्स को फ़ॉर्मेट करना, फ़िल्टर करना और तुलना करना चाहते हैं.
श्रृंखला के पिछले लेखों को अवश्य पढ़ें:
- PowerShell के साथ विंडोज को स्वचालित करने का तरीका जानें
- PowerShell में Cmdlets का उपयोग करना सीखना
- सीखना कैसे PowerShell में वस्तुओं का उपयोग करने के लिए
और पूरे सप्ताह बाकी श्रृंखला के लिए बने रहें.
डिफ़ॉल्ट स्वरूपण
जब मैंने पहली बार पावरशेल के साथ शुरुआत की, तो मुझे लगा कि सब कुछ जादू था, लेकिन सच्चाई यह है कि यह समझने में थोड़ा समय लगता है कि हुड के नीचे क्या चल रहा है। PowerShell स्वरूपण प्रणाली के लिए भी यही सच है। वास्तव में, यदि आप गेट-सर्विस cmdlet चलाते हैं, तो उत्पन्न आउटपुट केवल आपको 3 गुण दिखाता है: स्थिति, नाम और प्रदर्शन नाम.
लेकिन अगर आप गेट-सर्विस को गेट-मेंबर को पाइप करते हैं, तो आप देखते हैं कि सर्विसकंट्रोलर ऑब्जेक्ट्स के पास इन तीन गुणों की तुलना में बहुत अधिक है, इसलिए क्या चल रहा है?
उत्तर एक छिपी हुई फ़ाइल के भीतर है जो परिभाषित करता है कि अधिकांश अंतर्निहित cmdlets अपना आउटपुट कैसे प्रदर्शित करते हैं। एक समझ पाने के लिए, शेल में निम्नलिखित टाइप करें और एंटर करें.
नोटपैड C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.n1xml
यदि हम नोटपैड के फाइंड फंक्शन का उपयोग करते हैं, तो हम जल्दी से उस सेक्शन को छोड़ सकते हैं जो सर्विस-कॉन्ट्रोलर प्रकार की खोज करके गेट-सर्विस cmdlet के आउटपुट का विवरण देता है।.
अचानक, आप देख सकते हैं कि हुड के नीचे PowerShell पाइपलाइन में किसी भी ऑब्जेक्ट को स्वरूपित कर रहा है जो ServiceController प्रकार के हैं और तीन स्तंभों के साथ एक तालिका बना रहे हैं: स्थिति, नाम और DisplayName। लेकिन क्या होगा अगर आप जिस प्रकार के साथ काम कर रहे हैं, उस फ़ाइल में कोई प्रविष्टि नहीं है, या उस मामले के लिए कोई अन्य प्रारूप फ़ाइल नहीं है? खैर, यह वास्तव में काफी सरल है। यदि पाइपलाइन से निकलने वाली वस्तु में 5 या अधिक गुण हैं, तो PowerShell एक सूची में ऑब्जेक्ट के सभी गुणों को प्रदर्शित करता है; यदि इसमें 5 से कम गुण हैं, तो यह उन्हें एक तालिका में प्रदर्शित करता है.
आपका डेटा स्वरूपण
यदि आप किसी ऑब्जेक्ट या प्रकार के डिफ़ॉल्ट स्वरूपण से खुश नहीं हैं, तो आप अपने स्वयं के स्वरूपण को रोल कर सकते हैं। ऐसा करने के लिए आपको तीन cmdlets की आवश्यकता है.
- प्रारूप-सूची
- प्रारूप-टेबल
- स्वरूप वाइड
स्वरूप वाइड बस वस्तुओं का एक संग्रह लेता है और प्रत्येक वस्तु की एक एकल संपत्ति प्रदर्शित करता है। डिफ़ॉल्ट रूप से, यह एक नाम संपत्ति की तलाश करेगा; यदि आपकी वस्तुओं में नाम का गुण नहीं है, तो गुण के वर्णानुक्रम में छांटे जाने के बाद यह ऑब्जेक्ट की पहली संपत्ति का उपयोग करेगा.
जाओ-सेवा | स्वरूप वाइड
जैसा कि आप देख सकते हैं, यह दो कॉलमों के लिए भी डिफॉल्ट करता है, हालांकि आप दोनों को निर्दिष्ट कर सकते हैं कि आप किस प्रॉपर्टी का उपयोग करना चाहते हैं, साथ ही आप कितने कॉलमों को प्रदर्शित करना चाहते हैं।.
जाओ-सेवा | फॉर्मेट-वाइड -प्रोसेसर डिस्प्लेनेम-कॉलम 6
यदि कुछ डिफ़ॉल्ट रूप से तालिका के रूप में स्वरूपित किया जाता है, तो आप इसे हमेशा प्रारूप-सूची cmdlet का उपयोग करके सूची दृश्य में स्विच कर सकते हैं। आइए Get-Process cmdlet के आउटपुट पर एक नज़र डालें.
यह सारणीबद्ध दृश्य वास्तव में इस तरह की जानकारी को बहुत अच्छी तरह से सूट करता है, लेकिन हम दिखावा करते हैं कि हम इसे सूची के रूप में देखना चाहते हैं। हम सभी को वास्तव में यह करने के लिए पाइप है प्रारूप-सूची.
जाओ-प्रक्रिया | प्रारूप-सूची
जैसा कि आप देख सकते हैं कि डिफ़ॉल्ट रूप से सूची में केवल चार आइटम प्रदर्शित हैं। ऑब्जेक्ट के सभी गुणों को देखने के लिए, आप वाइल्डकार्ड वर्ण का उपयोग कर सकते हैं.
जाओ-प्रक्रिया | प्रारूप-सूची -प्रतिष्ठा *
वैकल्पिक रूप से, आप अपनी इच्छित संपत्तियों का चयन कर सकते हैं.
जाओ-प्रक्रिया | फॉर्मेट-लिस्ट -प्रत्यक्ष नाम, आईडी
प्रारूप-टेबल, दूसरी ओर, डेटा लेता है और इसे तालिका में बदल देता है। चूंकि गेट-प्रोसेस से हमारा डेटा पहले से ही तालिका के रूप में है, हम इसका उपयोग आसानी से उन गुणों को चुनने के लिए कर सकते हैं जो हम तालिका में प्रदर्शित करना चाहते हैं। मैंने सभी डेटा को एक स्क्रीन पर फिट करने के लिए AutoSize पैरामीटर का उपयोग किया.
जाओ-प्रक्रिया | प्रारूप-तालिका का नाम, आईडी -ऑटोसाइज़
छानना और तुलना करना
ऑब्जेक्ट-बेस्ड पाइपलाइन का उपयोग करने के बारे में सबसे अच्छी चीजों में से एक यह है कि आप किसी ऑब्जेक्ट पर पाइप लाइन से ऑब्जेक्ट्स को फ़िल्टर कहाँ कर सकते हैं.
जाओ-सेवा | कहाँ-वस्तु $ _। स्थिति-एक "चल रहा है"
जहाँ वस्तु का उपयोग करना वास्तव में बहुत सरल है। $ _ वर्तमान पाइपलाइन ऑब्जेक्ट का प्रतिनिधित्व करता है, जिसमें से आप एक संपत्ति चुन सकते हैं जिसे आप फ़िल्टर करना चाहते हैं। यहां, केवल उन ऑब्जेक्ट्स को रखा जा रहा है जहां स्टेटस प्रॉपर्टी रनिंग के बराबर है। कुछ तुलना ऑपरेटर हैं जिन्हें आप फ़िल्टरिंग स्क्रिप्ट ब्लॉक में उपयोग कर सकते हैं:
- eq (बराबर)
- neq (समान नहीं)
- जीईटी (ग्रेटर थान)
- ge (अधिक से अधिक या बराबर)
- लेफ्टिनेंट (कम से कम)
- ले (कम या बराबर)
- जैसे (वाइल्डकार्ड स्ट्रिंग मैच)
एक पूरी सूची और अधिक जानकारी को about_comparison वैचारिक मदद फ़ाइल में देखा जा सकता है, हालाँकि इसमें Obeject सिंटैक्स का उपयोग करने में कुछ समय लगता है। इस समय के लिए बस इतना ही!