Skip to content

पावरशेल मूल बातें: लूप्स के साथ प्रोग्रामिंग

    1651882981

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

    पावरशेल लूप, अपने सबसे बुनियादी रूप में, कमांड के एक ही सेट को एक निर्धारित संख्या में बार-बार दोहराते हैं। एक निश्चित अवधि या निश्चित संख्या में रिकॉर्ड के लिए लगातार कार्रवाई करने के लिए आदर्श, लूप आपकी स्क्रिप्ट को बड़े पैमाने पर सरल बना सकते हैं। पावरशेल विशेष रूप से कई cmdlets की सुविधा देता है – विशेष रूप से वे जो क्रिया से शुरू होते हैं – जो बड़ी संख्या में समान डेटा वाले ऑब्जेक्ट लौटाते हैं।

    पावरशेल में कई प्रकार के लूप उपलब्ध हैं, और कई मामलों में एक से अधिक लूप तकनीक का प्रभावी ढंग से उपयोग किया जा सकता है। कभी-कभी प्रदर्शन या कोड पठनीयता परिप्रेक्ष्य से, सबसे कुशल लूप प्रकार का निर्धारण करना आवश्यक होता है।

    प्रत्येक वस्तु के लिए लूप

    कई मामलों में ForEach-Object cmdlet का उपयोग करना (पहले पॉवरशेल ऑब्जेक्ट्स के साथ काम करने पर हमारे लेख में चर्चा की गई) किसी ऑब्जेक्ट के माध्यम से लूप करने का सबसे अच्छा तरीका है। यह सबसे सरल है, ForEach-Object के लिए केवल एक ऑब्जेक्ट की आवश्यकता होती है जिसके माध्यम से लूप किया जाता है और एक स्क्रिप्ट ब्लॉक जिसमें ऑब्जेक्ट के प्रत्येक सदस्य पर किए जाने वाले कमांड होते हैं।

    इन मापदंडों को या तो -इनपुटऑब्जेक्ट और -प्रोसेस पैरामीटर नामों द्वारा निर्दिष्ट किया जा सकता है, या ऑब्जेक्ट को फॉरएच-ऑब्जेक्ट सीएमडीलेट में पाइप करके और स्क्रिप्ट ब्लॉक को पहले पैरामीटर के रूप में रखा जा सकता है। इस मूल सिंटैक्स को स्पष्ट करने के लिए निम्न उदाहरण उपयोगकर्ता के दस्तावेज़ फ़ोल्डर की सामग्री के माध्यम से लूप करने के लिए ForEach-Object का उपयोग करने के दो तरीके दिखाता है:

    $myDocuments = Get-ChildItem $env:USERPROFILEDocuments -फ़ाइल $myDocuments | प्रत्येक वस्तु के लिए {$_.FullName} प्रत्येक वस्तु के लिए -InputObject $myDocuments -Process {$_.FullName}

    कुछ परिदृश्यों में लूप के ठीक पहले या बाद में एक या अधिक क्रियाएं करना फायदेमंद हो सकता है। -प्रोसेस स्क्रिप्ट ब्लॉक की सामग्री के ठीक पहले या बाद में निष्पादित करने के लिए स्क्रिप्ट ब्लॉक को परिभाषित करने के लिए -बिगिन और -एंड पैरामीटर का उपयोग किया जा सकता है। इसका उपयोग लूप के निष्पादन से पहले या बाद में एक चर को सेट या संशोधित करने के लिए किया जा सकता है।

    ForEach-Object के दो उपनाम हैं, ForEach और %, और यह PowerShell 3.0 में शुरू होने वाले शॉर्टहैंड सिंटैक्स का भी समर्थन करता है। निम्नलिखित तीन उदाहरण कार्य में समान हैं।

    प्राप्त करें-WMIObject Win32_LogicalDisk | ForEach-Object {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | ForEach {$_.FreeSpace} Get-WMIObject Win32_LogicalDisk | % खाली जगह

    लूप के लिए पावरशेल

    लूप के लिए आमतौर पर कमांड के एक सेट के माध्यम से एक निर्दिष्ट संख्या में पुनरावृति करने के लिए उपयोग किया जाता है, या तो किसी सरणी या ऑब्जेक्ट के माध्यम से कदम उठाने के लिए, या केवल आवश्यकतानुसार कोड के उसी ब्लॉक को दोहराने के लिए। लूप में प्रवेश करते समय एक चर के मान को सेट करके लूप के लिए बनाया जाता है, जिस स्थिति पर लूप को समाप्त किया जाना चाहिए, और लूप के माध्यम से हर बार उस चर के खिलाफ एक क्रिया की जानी चाहिए।

    निम्न उदाहरण गुणन तालिका बनाने के लिए उपयोग किए जाने वाले लूप के लिए एक बुनियादी दिखाता है:

    के लिए ($i=0; $i -le 10; $i++) {“10 * $i =” + (10 * $i) }

    लूप के लिए सरणी के प्रारंभिक सूचकांक के लिए प्रारंभिक मान सेट करके और सरणी की लंबाई पूरी होने तक मूल्य में वृद्धि करके सरणी मानों के माध्यम से कदम उठाने के लिए उपयोग किया जा सकता है। ऐरे इंडेक्स को वेरिएबल नाम के तुरंत बाद वर्गाकार कोष्ठक के अंदर इंक्रीमेंटेड वेरिएबल रखकर निर्दिष्ट किया जाता है, जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:

    $colors = @ (“रेड”, “ऑरेंज”, “येलो”, “ग्रीन”, “ब्लू”, “इंडिगो”, “वायलेट”) के लिए ($i=0; $i -lt $colors.Length; $ i++) {$रंग[$i] }

    जबकि, डू-व्हाइल, और डू-जब तक लूप्स

    एक तीसरे प्रकार के लूप जो पावरशेल का समर्थन करता है, में एक शर्त सेट करना शामिल है जो या तो लूप को तब तक संसाधित करने की अनुमति देता है जब तक कि शर्त सही है या जब तक यह पूरी नहीं हो जाती। जबकि और डू-व्हाइल लूप दोनों का उपयोग एक क्रिया करने के लिए किया जाता है, जबकि स्थिति $true का मूल्यांकन करती है, और केवल उनके सिंटैक्स में भिन्न होती है। डू-जब तक लूप में डू-व्हाइल के समान सिंटैक्स होता है, लेकिन कंडीशन स्टेटमेंट मिलने के बाद प्रोसेसिंग बंद कर दें।

    डू-व्हाइल और डू-जब तक लूप दोनों एक स्क्रिप्ट ब्लॉक से पहले डू कीवर्ड से शुरू होते हैं, इसके बाद कंडीशन कीवर्ड (जबकि या जब तक) और कंडीशन होता है। एक उदाहरण के रूप में निम्नलिखित दो लूप समान रूप से कार्य करते हैं, केवल स्थिति उलट जाती है:

    $i=1 करो { $i $i++ } जबकि ($i -le 10)$i=1 करो { $i $i++ } तक ($i -gt 10)

    जबकि लूप डू-व्हाइल लूप के समान प्रदर्शन करते हैं, केवल सिंटैक्स को थोड़ा बदल दिया जाता है। जबकि लूप केवल जबकि कीवर्ड का उपयोग करते हैं, उसके बाद कंडीशन और अंत में स्क्रिप्ट ब्लॉक का उपयोग करते हैं। यह लूप पिछले उदाहरणों के समान कार्य करता है, और डू-व्हाइल लूप के समान स्थिति का उपयोग करता है:

    $i=1 जबकि ($i -le 10) { $i $i++ }

    इन तीन लूप प्रकारों में से कोई भी – Do-While, Do-Until, और जबकि लूप – का उपयोग अनिश्चित काल तक लूप करने के लिए भी किया जा सकता है; जबकि और डू-जबकि $true पर सेट की गई शर्त के साथ लूप और $false पर सेट की गई शर्त के साथ Do-Until।

    कुछ स्थितियों में आपको लूप की स्थिति के अलावा किसी अन्य चीज़ के आधार पर लूप से जल्दी बाहर निकलने की आवश्यकता हो सकती है। इस मामले में लूप से बाहर निकलने के लिए ब्रेक कीवर्ड को लागू किया जा सकता है। यह अंतिम उदाहरण समान कार्यक्षमता दिखाता है, लेकिन उचित समय पर बाहर निकलने के लिए अनंत लूप और ब्रेक कीवर्ड का उपयोग करता है:

    $i=1 जबकि ($true) { $i $i++ if ($i -gt 10) { Break } }

    संबंधित:

    पावरशेल तुलना ऑपरेटर और सशर्त तर्क
    पावरशेल: वेरिएबल्स, एरेज़ और हैशटेबल्स का उपयोग करना
    पावरशेल मूल बातें: फ़ाइलें और फ़ोल्डर प्रबंधित करना

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x