Reklaam

Kriitiline esimene samm programmeerimise õppimine on silmustega töötamine Programmeerimise absoluutsed põhitõed algajatele (2. osa)Meie absoluutsete algajate programmeerimisjuhendi 2. osas kirjeldan funktsioonide põhitõdesid, tagasiväärtusi, silmuseid ja tingimusi. Enne selle käsitlemist veenduge, et olete läbi lugenud 1. osa, kus ma selgitasin ... Loe rohkem . Õnneks kasvab PowerShell teie oskustega veelgi.

Aja ja vaeva säästmiseks saate raamistada olemasolevad käsud, mida kasutate iga päev silmuste sees. Teie skriptid teevad raskeid raskusi, kui teete olulist tööd, lugedes MakeUseOfist rohkem artikleid!

Powershell ForEach Loops: Uks täiustatud andmetöötlusele

ForEach on objekti ForEach varjunimi. (Pseudonüüm on vaid PowerShelli käsu otsetee.) See on hea aeg rääkida viisist, kuidas PowerShell andmeid haldab.

Nagu enamus tänapäevaseid programmeerimiskeeli, PowerShell on objektorienteeritud Kust sai programm "Object Oriented"?Objektidele orienteeritud pole lihtsalt juhuslik häälesõna, mida kuulete programmeerimisringides. Nime taga on põhjus - aga mis siis? Liituge minuga, kui uurin programmeerimise kontseptsioonide põhialuseid ja selgitan ...

Loe rohkem . PowerShellis on kõik objekt, mis tähendab, et isegi muutujad on laiendatud omaduste ja funktsioonidega Powershelli juhised, mis parandavad teie Windowsi administraatori oskusiPowershell on võrdsetes osades käsurida ja skriptikeel. See annab teile võimaluse automatiseerida oma arvutit samade käskude abil, mida te selle haldamiseks kasutate. Loe rohkem . Seetõttu saate seada otsingud muutujaks ja anda tulemuste hulga.

$ yourVar = Get-ChildItem * foreach ($ fail $ yourVaris) {Teie sammud. }

Mõnes keeles oleks selle massiivi töötlemine mitmeastmeline protsess. Esiteks pikkuse saamine ja seejärel iga sammu arvestamine.

PowerShellis saate astuda massiivist läbi ja teostada iga toimingut, kasutades ForEachi. See säästab mitu koodirida, mis on abiks pikema skripti korral. Alljärgnev on näiteks väike skript, mis kasutaks paari Powershelli ForEachi ahelat. See loob ZIP-arhiivi kõigist teie failidest, mida te pole 30 päeva jooksul avanud.

Failiarhiivisüsteemi loomine ForEachi silmuste abil

Murdkem sammud maha. Sa kasutad Get-ChildItem et saada kõik failid kausta Dokumendid. Keskkonnamuutuja Mis on keskkonnamuutujad ja kuidas neid kasutada? [Windows]Aeg-ajalt õpin ma väikese näpunäite, mis paneb mind mõtlema, et "noh, kui ma oleksin teadnud, et aasta tagasi oleks see mind tundideks kokku hoidnud". Ma mäletan eredalt, kuidas õppisin ... Loe rohkem $ env: USERPROFILE käivitab skripti praegust profiili kasutades. See muutuja on rohkem kaasaskantav kui kõvakodeeritud tee. Selle otsingu tulemused omistatakse muutujale $ MyDocs. Seejärel loome oma ForEachi silmuse, lastes selle igal sammul läbi viia $ Doc teenuses $ MyDocs.

$ oldDocs = @ () $ MyDocs = Hangi-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Kursi. foreach ($ doc teenuses $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = Uus-üksus-tee "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc in $ oldDocs) {Move-Item -Path $ doc. FullName -Destination "$ ($ ArchiveFolder. Täisnimi) \ $ ($ doc. Nimi) "-Kinnitage $ false. } $ source = $ ArchiveFolder. Täisnimi. $ sihtkoht = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Nimi) .zip " Lisatüüp - üksusnimi "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ allikas, $ sihtkoht) if (test-path $ sihtkoht) {Eemalda üksus-Tee $ ArchiveFolder -Korralda -Kinnita $ false. }

Silmuse sees kontrollime, kas iga fail on LastAccessTime vara on vanem kui 30 päeva. Saame selle koos Get-Date cmdlet ja kasutades AddDays funktsioon negatiivse kolmekümnega. Kui see on nii, lisame faili kataloogi $ myOldDocs massiiv. Kui faili sortimine on lõpule jõudnud, võtame siis oma valmis massiivi ja loome ZIP-faili. See protsess on natuke keerulisem, kuna hõlmab natuke .NET-i kutsumist. Ärge muretsege, kui te pole sellest piisavalt aru saanud - saate koodi varastada see TechNeti abidokument.

Siin toimuva jaotamine: kolime kõik oma vanad failid uude kataloogi, mille tänane kuupäev on vanem kui 30 päeva. Kui see kaust on üles ehitatud, peame looma samanimelise ZIP-arhiivi. Kontrollime, kas arhiivi õnnestumine ja .ZIP-fail on olemas, ja kustutame siis uue kausta. Määrake see plaanitud toiminguks, mida korratakse kuus. Säästad natuke ruumi ja hoiate kausta Dokumendid puhtana.

Kuigi ja tee samal ajal: silmused olekus

Kui soovite silmust käivitada ainult siis, kui teatud tingimus on täidetud, kasutate silmust Kuigi. Kui kasutate loenduse jälgimiseks muutujat, määrake see esimene.

i = 0. while (i <10) {Teie sammud i + = 1. }

Probleem on selles, et kui te loendurit ei kasuta, võiksite oma koodi vähemalt korra käivitada, isegi kui test vastab tõele. See on nii allpool toodud näiteskripti puhul. Nii et neil juhtudel soovite kasutada Do-While silmust Kuidas toimivad silmused programmeerimiselSilmused on üks esimesi juhtimistüüpe, mida programmeerimisel õppida saate. Tõenäoliselt teate aeg-ajalt ja silmuste kohta, kuid mida täidab ajutine silmus? Loe rohkem . Süntaks on pisut erinev.

tee {Sinu sammud. } while (tingimuslik avaldus)

Nende kasutamine pole algajale programmeerijale just nii ilmne. Tüüpilisi igapäevaseid skripte tehes ei pruugi te nii tihti kokku puutuda. Seal, kus need eriti kasuks tulevad, on teha protsessi edukuse testimiseks kiiret taimerit.

Kavatseme luua kiire skripti, et taaskäivitada kaugarmasin ja anda märku, kui seda ei kuvata 15 minuti jooksul. Selle stsenaariumi korral eeldatakse, et tegemist on koduserveri või mõne muu masinaga, mis ei taaskäivita eriti sageli. Reguleerige aega vabalt, kui teie arvuti kerkib tavaliselt kiiremini.

Reboot and Check: taaskäivituse ahela kasutamine

See skript on natuke lihtsam. Esiteks kasutate Taaskäivitage arvuti käsk kaugmasina taaskäivitamiseks. (Kasutasime siin taaskäivitamise käskude jaoks näiv-IP-d, kirjutage see kindlasti üle oma arvuti DNS / IP-ga). Seejärel looge loendusmuutuja, i ja seadke see väärtusele 0. Järgmisena on teil käsk Do-loop, kus Start-Sleep peatab skripti 300 sekundiks (viis minutit). Teine käsk lisab ühe loendurile.

Taaskäivitage arvuti - arvutiNimi 127.0.0.1. i = 0. tehke {Start-Sleep -Sekundid 300 $ i + = 1. } while ((! (Test-Connection 127.0.0.1 -Quiet)) -või $ i -gt 3) if ($ i -gt 3) {Write-Ouput "Kaugmasin ei reageeri, palun kontrollige." } else {Kirjutusväljund "taaskäivitus õnnestus" }

Siis on meil olemas meie kriteeriumid. Kasutame testi Või, et veenduda, et rike tekitab häire. Alternatiiviks on skript, mis loob lõputult kaugarmasina ootamise. Masina kontrollimiseks kasutame nuppu Testühendus cmdlet. Lihtsuse huvides on see Ping for PowerShell. Lisame parameetri - vaikne mis sunnib teda tagastama tõese või vale, mitte pakettide tulemuste. Or-lause teises osas kontrollitakse, kas loendurit on rohkem kui kolm.

Kui ahel on lõpule jõudnud, tahame väljundi luua. See tähendab, et peame oma letti kontrollima. See on kiire, kui / muidu avaldus. Kui see on suurem kui kolm, väljastatakse skript, millele kaugmasin ei reageeri. Kui seda pole, näitab see, et taaskäivitamine õnnestus.

Muud silmused

PowerShellis on saadaval veel kahte tüüpi silmuseid. Need on mõnevõrra seotud kahe eelmise silmusega, neid lihtsalt pole nii sageli kasutatud. A For loop töötab sarnaselt Butti näitele. Valite kõik oma kriteeriumid hindamisel ja määrake siis oma cmdlet.

jaoks ($ i = 0; $ i -lt 10; $ i ++) {Teie sammud. }

Teha Kuni silmused on sarnased Teha silmustena, muudate lihtsalt avalduse Kuigi väärtuseks Kuni. Näiteskriptis oleks see sama mis käitumises. See on stiilivalik, kuid teistsuguses olukorras on Do Do küll mitmekülgsem. Nii et kui mäletate ainult ühte, on kasulikum teha ka Do Do.

powershell foreach silmuseid

PowerShellist on abi ka nende silmuste jaoks. Abi saate lisades umbes enne silmuse nime Get-Help'is. Seejärel näete näiteid ja muid näpunäiteid iga tüübi kohta. Nendest peaks abi saama, kui te jänni jääte.

Jätkame teiega kasvamist

Sel hetkel on teil enamus oskusi robustsete skriptide loomise alustamiseks. Kas koduse masina automatiseerimine 15 lisaülesannet PowerShell saab Windows 10-s hakkamaPowerShell sarnaneb käsureale, kuid parem. See on võimas süsteemi administreerimise tööriist. Oleme koostanud 15 ülesannet, mõned lihtsad, mõned keerulised, mis võidavad PowerShelli võludest. Loe rohkem või tööl aja säästmiseks aitavad silmused teie skripte rohkem teha. Nende silmuste ühendamine tõrkeotsing viib teie skriptimise kaugemale põhitõdedest Nende näpunäidetega saate PowerShelli vigu käsitleda nagu ülemusPowerShelli tõrkekäsitlus koosneb neljast osast. Siit saate teada, kuidas parandada vigu ja palju muud rakenduses Microsoft PowerShell. Loe rohkem . See avab ukse keerukamatele keeltele.

Mis on nutikas PowerShelli skript, mille olete silmuste abil loonud? Jagage seda meiega kommentaarides.

Michael ei kasutanud Mac-i, kui nad olid hukule määratud, kuid ta saab Applescriptis kodeerida. Tal on kraadi arvutiteaduses ja inglise keeles; ta on juba mõnda aega kirjutanud Macist, iOS-ist ja videomängudest; ja ta on olnud üle kümne aasta päevas IT-ahv, kes on spetsialiseerunud skriptimisele ja virtualiseerimisele.