मुखपृष्ठ » कैसे » गीक स्कूल पॉवरशेल में संग्रह के साथ काम करना

    गीक स्कूल पॉवरशेल में संग्रह के साथ काम करना

    चूंकि पावरशेल .Net फ्रेमवर्क पर आधारित है और WMI और CIM जैसी विभिन्न अन्य तकनीकों को शामिल करता है, इसलिए एक ही चीज़ को पूरा करने के लिए हमेशा एक से अधिक तरीके होते हैं। इस छोटी सी पोस्ट के लिए हमसे जुड़ें जहां हम सीखते हैं कि अपने कार्यों को पूरा करने के लिए सबसे अच्छा तरीका कैसे चुनना है.

    श्रृंखला के पिछले लेखों को अवश्य पढ़ें:

    • PowerShell के साथ विंडोज को स्वचालित करने का तरीका जानें
    • PowerShell में Cmdlets का उपयोग करना सीखना
    • सीखना कैसे PowerShell में वस्तुओं का उपयोग करने के लिए
    • PowerShell में लर्निंग फॉर्मेटिंग, फ़िल्टरिंग और तुलना
    • PowerShell में रीमोटिंग का उपयोग करना सीखें
    • कंप्यूटर की जानकारी प्राप्त करने के लिए PowerShell का उपयोग करना

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

    बैच Cmdlets का उपयोग करना

    इससे पहले श्रृंखला में, जब हमने आपको पाइपलाइन से परिचित कराया था, तो हमने आपको दिखाया कि आप किस तरह से उन वस्तुओं को ले जा सकते हैं, जो एक cmdlet आउटपुट करती हैं और उन्हें इनपुट के रूप में दूसरे cmdlet में इस तरह से उपयोग करते हैं:

    गेट-प्रोसेस -नाम नोटपैड | बंद करो-प्रक्रिया

    यह "नोटपैड" नाम के साथ किसी भी प्रक्रिया को मार देगा। लेकिन आप शायद सोच रहे हैं कि पावरशेल नोटपैड के हर उदाहरण को एक कमांड से कैसे मार सकता है। उत्तर स्टॉप-प्रोसेस cmdlet की सहायता से निहित है.

    Stop-Process -Full में मदद करें

    यदि आप वाक्य रचना अनुभाग में कोड की अंतिम पंक्ति को देखते हैं, तो आप देख सकते हैं कि InputObject पैरामीटर प्रकार की प्रक्रिया को स्वीकार करता है [], और जब भी आप किसी प्रकार को दो वर्ग कोष्ठक के बाद देखते हैं जैसे कि इसका अर्थ है कि पैरामीटर स्वीकार करता है एक या अधिक पूर्ववर्ती प्रकार का। इस स्थिति में, यह एक या अधिक प्रक्रिया ऑब्जेक्ट्स को स्वीकार करता है। तकनीकी रूप से, हम कहेंगे कि InputObject cmdlet एक प्रक्रिया को स्वीकार करता है सरणी. जब भी आपके पास एक cmdlet हो जो इस तरीके से बैच संचालन का समर्थन करता है, इसका उपयोग करें। यह पसंद नंबर एक है.

    WMI का उपयोग करना

    हालाँकि WMI Microsoft HQ से जहाज करने के लिए तकनीक का सबसे अच्छा टुकड़ा नहीं है, यह वस्तुओं के संग्रह के साथ काम करने की सूची में दूसरे स्थान पर आता है। हम आसानी से Win32_Process वर्ग से चल रही प्रक्रियाओं की सूची प्राप्त कर सकते हैं जैसे:

    Get-WmiObject -Class Win32_Process

    चूंकि WMI क्वेरी अपनी तरह की वस्तु लौटाती है, इसलिए आपको एक ऐसी विधि की तलाश करनी होगी, जो प्रक्रिया को रोक सके, इसलिए पाइप को गेट-मेंबर को देती है.

    Get-WmiObject -Class Win32_Process | Get-सदस्य

    लगता है कि बंद करने के लिए निकटतम चीज समाप्त करने की विधि है, इसलिए यह एक होना चाहिए। WMI ऑब्जेक्ट पर एक विधि को कॉल करने के लिए, आप बस इसे Invoke-WmiMethod पर जाएं और विधि का नाम निर्दिष्ट करें.

    Get-WmiObject -Class Win32_Process -Filter "name = 'notepad.exe'" | आह्वान-WmiMethod -Name समाप्त करें

    महान, यह चाल चली। जब भी आपको WMI में 0 का ReturnValue मिलता है, तो बस याद रखें कि कमांड सफलतापूर्वक निष्पादित हुई.

    गणना

    अन्य दो तरीकों का असफल होना, अगर आपको वस्तुओं के एक समूह के लिए कुछ करना है तो आप पूरी वस्तु को अलग कर सकते हैं और प्रत्येक व्यक्तिगत वस्तु पर कार्य कर सकते हैं। सबसे पहले आपको उस विधि को खोजना होगा जिसका उपयोग आप किसी एकल प्रक्रिया को रोकने के लिए करेंगे.

    जाओ-प्रक्रिया | Get-Member -MemberType मेथड

    बिल्कुल सही, ऐसा लगता है कि हम किल विधि का उपयोग कर सकते हैं और फिर उन सभी को मारने के लिए ForEach-Object में पाइप कर सकते हैं.

    गेट-प्रोसेस -नाम नोटपैड | फॉर-ऑब्जेक्ट -प्रोसेस $ _। किल ()

    यहां हमने सभी प्रोसेस ऑब्जेक्ट्स को लिया जो गेट-प्रोसेस ने लौटाए और उन्हें ForEach-Object cmdlet में पास कर दिया। जहाँ-जहाँ वस्तु cmdlet पसंद है, हमने $ _ के साथ पाइपलाइन में प्रत्येक वस्तु का प्रतिनिधित्व किया, जिसे हम किल () विधि पर कॉल करने में सक्षम थे। उन सभी के साथ, जिन्होंने कहा और किया है, एक संग्रह की गणना उपरोक्त विधियों की तुलना में बहुत धीमी है और इसे केवल अंतिम परिणाम के रूप में उपयोग किया जाना चाहिए.

    सारांश

    विकल्प एक

    गेट-प्रोसेस -नाम नोटपैड | बंद करो-प्रक्रिया

    पसंद दो

    Get-WmiObject -Class Win32_Process -Filter "name = 'notepad.exe'" | आह्वान-WmiMethod -Name समाप्त करें

    च्वाइस थ्री

    गेट-प्रोसेस -नाम नोटपैड | फॉर-ऑब्जेक्ट -प्रोसेस $ _। किल ()

    यह सब इस समय के लोगों के लिए है, अगले सप्ताह आपको अधिक पावरस्ले मज़े के लिए देखें.