विज्ञापन

में एक महत्वपूर्ण पहला कदम लर्निंग प्रोग्रामिंग लूप्स के साथ काम कर रही है शुरुआती के लिए प्रोग्रामिंग की पूर्ण मूल बातें (भाग 2)प्रोग्रामिंग के लिए हमारे पूर्ण शुरुआती गाइड के भाग 2 में, मैं फ़ंक्शन, रिटर्न मान, लूप और सशर्त की मूल बातें कवर करूंगा। सुनिश्चित करें कि आपने इससे निपटने से पहले भाग 1 पढ़ा है, जहाँ मैंने समझाया ... अधिक पढ़ें . शुक्र है, PowerShell आपके कौशल के साथ बढ़ता रहता है।

आप समय और प्रयास को बचाने के लिए हर दिन आपके द्वारा उपयोग किए जाने वाले मौजूदा आदेशों को फ्रेम कर सकते हैं। MakeUseOf पर और अधिक लेख पढ़ने का महत्वपूर्ण काम करते हुए आपकी स्क्रिप्ट भारी उठाने का काम करती है!

पॉवर्सशेल फॉरच लूप्स: द डोर टू एडवांस्ड डेटा हैंडलिंग

ForEach, ForEach-Object का उपनाम है। (ए एलियास पॉवरशेल में एक कमांड के लिए केवल एक शॉर्टकट है।) यह उस तरीके के बारे में बात करने का एक अच्छा समय है जो पॉवरस्लाइड डेटा को संभालता है।

अधिकांश आधुनिक प्रोग्रामिंग भाषाओं की तरह, PowerShell ऑब्जेक्ट-ओरिएंटेड है "ऑब्जेक्ट ओरिएंटेड" प्रोग्रामिंग कहां से अपना नाम प्राप्त करें?ऑब्जेक्ट ओरिएंटेड आप प्रोग्रामिंग हलकों में सुनाई देने वाला एक यादृच्छिक शब्द नहीं है। नाम के पीछे एक कारण है - लेकिन क्या? प्रोग्रामिंग अवधारणाओं के मूल सिद्धांतों में से कुछ का पता लगाने और मुझे समझाने के लिए मेरे साथ जुड़ें ...

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

$ yourVar = Get-ChildItem * foreach ($ फाइल अपने $ $ में) {आपके कदम। }

कुछ भाषाओं में, इस सरणी को संसाधित करना एक मल्टीस्टेप प्रक्रिया होगी। सबसे पहले, लंबाई प्राप्त करना और फिर प्रत्येक चरण को गिनना।

PowerShell में, आप सरणी के माध्यम से कदम रखते हैं और ForEach का उपयोग करके प्रत्येक पर कार्रवाई करते हैं। यह आपको कोड की कई पंक्तियों को सहेजता है, जो कि एक लंबी स्क्रिप्ट मिलने पर मददगार होती है। उदाहरण के लिए, निम्नलिखित एक छोटी स्क्रिप्ट है जो Powershell ForEach लूप के एक जोड़े का उपयोग करेगी। यह आपकी सभी फ़ाइलों का ज़िप संग्रह बनाता है जिसे आपने 30 दिनों में खोला नहीं है।

ForEach Loops का उपयोग करके एक फ़ाइल संग्रह प्रणाली का निर्माण

चलिए चरणों को तोड़ते हैं। तुम इस्तेमाल Get-ChildItem दस्तावेज़ फ़ोल्डर में सभी फ़ाइलों को प्राप्त करने के लिए। पर्यावरण चर पर्यावरण चर क्या हैं और मैं उनका उपयोग कैसे कर सकता हूं? [खिड़कियाँ]हर अब और फिर मैं एक छोटी सी टिप सीखूंगा, जो मुझे "अच्छी तरह से सोचने पर मजबूर कर देती है, अगर मुझे पता है कि एक साल पहले तो यह मुझे घंटों समय की बचत होगी"। मुझे विशद रूप से याद है कि कैसे ... अधिक पढ़ें $ env: USERPROFILE वर्तमान प्रोफ़ाइल का उपयोग करके स्क्रिप्ट चलाता है। यह चर एक हार्डकोड मार्ग की तुलना में अधिक पोर्टेबल है। उस खोज के परिणाम को चर को सौंपा गया है $ mydocs. हम तब प्रत्येक के माध्यम से यह कदम करके हमारे ForEach पाश बनाएँ $ $ $ MyDocs में.

$ पुराने = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recillse। foreach ($ MyDocs में $ doc) {if ($ doc) LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = dd} } $ पुरालेख फ़ोल्डर = नया-आइटम -पाथ "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory। foreach ($ पुराने डॉक्स में $) {मूव-आइटम -पैथ $ doc। FullName -Destination "$ ($ संग्रह)। FullName) \ $ ($ डॉक। नाम) “-कॉन्फ़र्म $ झूठा। } $ स्रोत = $ पुरालेख फ़ोल्डर। पूरा नाम। $ गंतव्य = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder)। नाम) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ स्रोत, $ गंतव्य) अगर (परीक्षण-पथ $ गंतव्य) {Remove-Item -ath $ ArchiveFolder -Recurse -Confirm $ false। }

लूप के अंदर, हम यह देखने के लिए जाँचते हैं कि क्या प्रत्येक फ़ाइल का है LastAccessTime संपत्ति 30 दिनों से पुरानी है। हम इस के साथ मिलता है तारीख लें cmdlet, और का उपयोग कर AddDays कार्य नकारात्मक तीस के साथ। यदि यह है, तो हम फ़ाइल को इसमें जोड़ते हैं $ myOldDocs सरणी। फ़ाइल के प्रकार के पूरा होने के बाद, हम फिर अपना पूरा सरणी लेते हैं और एक ज़िप फ़ाइल बनाते हैं। यह प्रक्रिया थोड़ी अधिक जटिल है क्योंकि इसमें .NET के बिट को शामिल करना शामिल है। यदि आप इसे बहुत समझ नहीं पाते हैं, तो चिंता न करें - आप इससे कोड चुरा सकते हैं यह TechNet मदद दस्तावेज़ है.

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

जबकि और दो बार: स्थिति पर लूप

यदि आप किसी विशेष स्थिति के पूरा होने पर ही लूप चलाना चाहते हैं, तो आप लूप का उपयोग करते हैं। यदि आप गणना को ट्रैक करने के लिए एक चर का उपयोग कर रहे हैं, तो पहले सेट करें।

मैं = 0। जबकि (i <10) {आपके चरण i + = 1। }

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

{आपके चरण। } जबकि (सशर्त वक्तव्य)

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

यदि हम 15 मिनट के भीतर वापस नहीं आते हैं तो हम एक दूरस्थ मशीन को रिबूट करने के लिए एक त्वरित स्क्रिप्ट का निर्माण करने जा रहे हैं और सतर्क करते हैं। यह परिदृश्य इसे एक होम सर्वर या अन्य मशीन मानता है जो बहुत बार रिबूट नहीं करता है। यदि आपका कंप्यूटर आमतौर पर तेजी से ऊपर आता है तो समय को समायोजित करने के लिए स्वतंत्र महसूस करें।

रिबूट और चेक: एक डू-जबकि लूप का उपयोग करना

यह लिपि थोड़ी सरल है। सबसे पहले, आप का उपयोग करें कंप्यूटर को पुनः शुरू करें रिमोट मशीन को रिबूट करने के लिए कमांड। (हमने रिबूट कमांड के लिए यहां एक डमी आईपी का उपयोग किया है, अपने कंप्यूटर के डीएनएस / आईपी के साथ इसे अधिलेखित करना सुनिश्चित करें)। फिर काउंटर वेरिएबल बनाएं, मैं और इसे 0 पर सेट करें। अगला, आपके पास स्टार्ट-स्लीप के साथ अपना डू लूप है जो स्क्रिप्ट को 300 सेकंड (पांच मिनट) तक रोक देगा। एक दूसरी कमांड काउंटर में एक जोड़ता है।

पुनरारंभ-कंप्यूटर -कंप्यूटरनाम 127.0.0.1। मैं = 0। do {Start-Sleep -Seconds 300 $ i + = 1 है। } जबकि ((((टेस्ट-कनेक्शन 127.0.0.1 -Quiet)) -या $ i -gt 3) अगर ($ i -gt 3) {लिखें- Ouput "रिमोट मशीन जवाब नहीं दे रही है, कृपया देखें।" } बाकी {लिखें-आउटपुट "रिबूट सफल" }

तब हमारे पास हमारे मापदंड हैं। हम यह सुनिश्चित करने के लिए एक परीक्षण का उपयोग करते हैं कि विफलता एक चेतावनी उत्पन्न करती है। वैकल्पिक रूप से स्क्रिप्ट लूपिंग है जो दूरस्थ मशीन की प्रतीक्षा कर रहा है। मशीन की जांच के लिए, हम उपयोग कर रहे हैं परीक्षण कनेक्शन cmdlet। सादगी के लिए, यह पॉवरशेल के लिए पिंग है। हम पैरामीटर जोड़ते हैं -शांत जो पैकेट के परिणामों के बजाय सही या गलत लौटने के लिए मजबूर करता है। यदि काउंटर तीन से अधिक है तो Or कथन का दूसरा भाग जांचता है।

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

अन्य लूप्स

PowerShell में दो अन्य प्रकार के लूप उपलब्ध हैं। वे पिछले दो छोरों से कुछ हद तक संबंधित हैं, वे बस के रूप में आमतौर पर उपयोग नहीं किए जाते हैं। लूप के लिए A उदाहरण के समान कार्य करता है। आप मूल्यांकन में अपने सभी मानदंड निर्धारित करते हैं, फिर अपने cmdlets निर्धारित करते हैं।

के लिए ($ i = 0; $ i -lt 10; $ i ++) {आपके चरण। }

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

पॉवरशेल फॉर्च लूप्स

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

आप के साथ आगे बढ़ना जारी है

इस बिंदु पर, आपके पास मजबूत स्क्रिप्ट बनाने के लिए अधिकांश कौशल हैं। या अपने घर की रिग को स्वचालित करना विंडोज 10 में 15 उन्नत टास्क पॉवरशेल संभाल सकते हैंPowerShell कमांड प्रॉम्प्ट के समान है, लेकिन बेहतर है। यह एक शक्तिशाली प्रणाली प्रशासन उपकरण है। हमने 15 कार्यों को संकलित किया है, कुछ सरल, कुछ जटिल, जो पावरशेल के जादू से लाभान्वित होते हैं। अधिक पढ़ें या काम पर समय बचाने के लिए, लूप आपकी स्क्रिप्ट को और अधिक करने में मदद करता है। इन छोरों को मिलाकर त्रुटि हैंडलिंग मूल रूप से परे आपकी स्क्रिप्टिंग को ले जाती है इन सुझावों के साथ एक मालिक की तरह PowerShell त्रुटियाँ संभालेंPowerShell त्रुटि हैंडलिंग के चार भाग हैं। Microsoft PowerShell में त्रुटियाँ और अधिक होने पर ठीक करने का तरीका जानें। अधिक पढ़ें . यह अधिक उन्नत भाषाओं के लिए द्वार खोलता है।

एक शक्तिशाली PowerShell स्क्रिप्ट क्या है जो आपने लूप का उपयोग करके बनाई है? इसे टिप्पणियों में हमारे साथ साझा करें।

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