Mainos

Ratkaiseva ensimmäinen askel vuonna Ohjelmoinnin oppiminen työskentelee silmukoilla Ohjelmoinnin ehdoton perusteet aloittelijoille (osa 2)Ohjelmoinnin absoluuttisen aloittelijan oppaan osassa 2 kerron toimintojen perusteet, palautusarvot, silmukat ja ehdolliset ehdot. Varmista, että olet lukenut osan 1 ennen kuin käsittelet tätä, missä selitin ... Lue lisää . Onneksi PowerShell kasvaa edelleen taitosi kanssa.

Voit kehystää nykyiset komennot, joita käytät joka päivä, silmukoiden sisälle säästääksesi aikaa ja vaivaa. Skriptisi tekevät raskaita nostoja samalla kun luet lisää artikkeleita MakeUseOfista!

Powershell ForEach Loops: Ovi edistyneeseen tietojenkäsittelyyn

ForEach on aliava ForEach-Objectille. (Alias ​​on vain pikakuvake komennolle PowerShellissä.) Tämä on hyvä aika puhua tapaa, jolla PowerShell käsittelee tietoja.

Kuten useimmat nykyaikaiset ohjelmointikielet, PowerShell on oliokeskeinen Mistä "Object Oriented" -ohjelmointi sai nimensä?Objektisuuntautunut ei ole vain satunnainen summelisana, jonka kuulet ohjelmointipiireissä. Nimen takana on syy - mutta mikä? Liity minuun tutkiessani joitain ohjelmoinnin käsitteiden perusteita ja selittäen ...

instagram viewer
Lue lisää . Kaikki PowerShellissä on esine, mikä tarkoittaa jopa muuttujia joilla on laajennetut ominaisuudet ja toiminnot Powershell-lomakkeet, jotka parantavat Windows-järjestelmänvalvojataitojasiPowershell on yhtä suuret osat komentorivityökalu ja komentosarjojen kieli. Se antaa sinulle mahdollisuuden automatisoida tietokoneesi samojen komentojen avulla, joita käytät sen hallitsemiseen. Lue lisää . Tämän ominaisuuden vuoksi voit asettaa haut muuttujaan ja lopulta joukko tuloksia.

$ yourVar = Hanki ChildItem * foreach ($ tiedosto $ yourVarissa) {Sinun vaiheet. }

Joillakin kielillä tämän taulukon käsittely olisi monivaiheinen prosessi. Ensin saadaan pituus ja lasketaan sitten jokainen vaihe.

PowerShellissä siirryt taulukon läpi ja suoritat jokaisen toiminnon ForEachin avulla. Tämä säästää useita koodiriviä, mikä on hyödyllistä, jos sinulla on pidempi komentosarja. Seuraava on esimerkiksi pieni skripti, joka käyttäisi muutama Powershell ForEach -silmukka. Se luo ZIP-arkiston kaikista tiedostoistasi, joita et ole avannut 30 päivässä.

Tiedostoarkistojärjestelmän rakentaminen ForEach-silmukoiden avulla

Hajotamme askeleet alas. Sinä käytät Get-ChildItem hakeaksesi kaikki Tiedostot-kansion tiedostot. Ympäristömuuttuja Mitkä ovat ympäristömuuttujat ja kuinka voin käyttää niitä? [Windows]Ajoittain opit pienen kärjen, joka saa minut ajattelemaan "hyvin, jos tietäisin, että vuosi sitten se olisi säästänyt minulle tunteja". Muistan elävästi oppimisen kuinka ... Lue lisää $ env: KÄYTTÖPROFILI suorittaa skriptin nykyistä profiilia käyttämällä. Tämä muuttuja on siirrettävämpi kuin koodattu polku. Tämän haun tulokset määritetään muuttujalle $ MyDocs. Sitten luomme ForEach-silmukan saamalla sen läpi jokaisen $ Doc sisällä $ MyDocs.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Kurssi. foreach ($ doc tiedostossa $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = Uusi kohde -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc-tiedostossa $ oldDocs) {Siirrä kohta -Polku $ doc. FullName -Destination "$ ($ ArchiveFolder. FullName) \ $ ($ asiak. Nimi) "-Vahvista $ false. } $ source = $ ArchiveFolder. Koko nimi. $ Destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Name) zip" Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: LuoFromDirectory ($ lähde, $ kohde) if (test-path $ Destination) {Poista-Item -Path $ ArchiveFolder -Recurse -Vahvista $ false. }

Silmukan sisällä tarkistamme, onko kukin tiedosto LastAccessTime omaisuus on yli 30 päivää vanhempi. Saamme tämän kanssa Get-Date cmdlet ja käyttämällä AddDays toiminto negatiivisella kolmekymmentä. Jos se on, lisäämme tiedoston $ myOldDocs array. Kun tiedostolajittelu on valmis, otamme sitten valmiit taulukot ja luomme zip-tiedoston. Tämä prosessi on hieman monimutkaisempi, koska siihen sisältyy hiukan .NET: n käynnistäminen. Älä huolestu, jos et aivan ymmärrä sitä - voit varastaa koodin tämä TechNet-ohjeasiakirja.

Hajottaaksesi täällä tapahtuvan: Siirrämme kaikki vanhat tiedostomme uuteen hakemistoon, jonka nimi on tänään päivämäärä, yli 30 päivän ajan. Kun kansio on rakennettu, meidän on luotava saman nimen ZIP-arkisto. Yritämme varmistaaksemme, että arkisto onnistui ja .ZIP-tiedosto on siellä, ja poistamme sitten uuden kansion. Aseta tämä aikataulutehtäväksi, joka suoritetaan kerran kuukaudessa. Säästät itsellesi vähän tilaa ja pidät Asiakirjat-kansiosi puhtaana.

Vaikka ja tee samalla: Silmukoita ehdossa

Jos haluat suorittaa silmukan vain, kun tietty ehto täyttyy, käytät Vaikka-silmukkaa. Jos käytät muuttujaa jäljittääksesi määrän, aseta se ensin.

i = 0. kun taas (i <10) {Vaiheesi i + = 1. }

Ongelmana on, että jos et käytä laskuria, saatat tarvita koodisi ajaa ainakin kerran, vaikka testi olisi totta. Näin on alla olevan esimerkkikoodin kohdalla. Joten niissä tapauksissa haluat käyttää Do-while-silmukkaa Kuinka silmukoiden toiminta tietokoneohjelmoinnissaSilmukat ovat yksi ensimmäisistä ohjaustyypeistä, jotka opit ohjelmoinnissa. Tiedät todennäköisesti silmukoista ja silmukoista, mutta mitä väliaikainen silmukka suorittaa? Lue lisää . Syntaksi on hiukan erilainen.

tee {Vaiheesi. } while (ehdollinen lausunto)

Näiden käyttäminen ei ole aivan yhtä ilmeistä aloittelijalle. Tekemällä tyypillisiä päivittäisiä komentosarjoja, et voi törmätä niihin usein. Niissä, joissa ne ovat erityisen hyödyllisiä, on tehdä väliaikainen ajastin prosessin onnistumisen testaamiseksi.

Aiomme luoda nopean komentosarjan etäkoneen uudelleenkäynnistystä varten ja ilmoittaa, jos se ei tule takaisin 15 minuutin kuluessa. Tässä skenaariossa oletetaan, että kyse on kotipalvelimesta tai muusta koneesta, joka ei käynnisty uudelleen usein. Säädä aikaa vapaasti, jos tietokoneesi tulee yleensä nopeammin.

Käynnistä uudelleen ja tarkista: Käytönaikaisen silmukan käyttäminen

Tämä skripti on vähän yksinkertaisempi. Ensin käytät Restart-Tietokone komento käynnistää etäkone uudelleen. (Käytimme täällä IP-osoitetta uudelleenkäynnistyskomennoissa. Muista korvata tämä tietokoneesi DNS / IP-tunnuksella). Luo sitten laskurimuuttuja, minä ja aseta se arvoon 0. Seuraavaksi sinulla on Do-silmukka Start-Sleepin kanssa, joka pysäyttää komentosarjan 300 sekunniksi (viideksi minuutiksi). Toinen komento lisää yhden laskuriin.

Käynnistä tietokone uudelleen - tietokoneen nimi 127.0.0.1. i = 0. tee {Start-Sleep -Seconds 300 $ i + = 1. } kun ((! (Test-Connection 127.0.0.1 -Quiet)) tai $ i -gt 3) if ($ i -gt 3) {Write-Ouput "Etäkone ei vastaa, tarkista." } else {Kirjoitustulos "Uudelleenkäynnistys onnistui" }

Sitten meillä on Some-kriteerimme. Käytämme Or-testiä varmistaaksemme, että vika tuottaa hälytyksen. Vaihtoehto on käsikirjoitus, joka odottaa loputtomasti etälaitetta. Tarkastamme koneen, käyttämällä Testi-liitäntä cmdlet. Yksinkertaisuuden vuoksi tämä on Ping for PowerShell. Lisäämme parametrin -Hiljainen joka pakottaa sen palauttamaan totta tai vääriä pakettien tulosten sijaan. Or-lauseen toinen osa tarkistaa, onko laskuria enemmän kuin kolme.

Kun silmukka on valmis, haluamme luoda tulosteen. Tämä tarkoittaa, että meidän on tarkistettava laskuri. Tämä on nopea if / else -lausunto. Jos se on suurempi kuin kolme, komentosarja tulostaa, että etäkone ei vastaa. Jos sitä ei ole, se osoittaa, että uudelleenkäynnistys onnistui.

Muut silmukat

PowerShellissä on saatavana kaksi muuta tyyppiä. Ne liittyvät jonkin verran kahteen edelliseen silmukkaan, niitä ei vain ole niin yleisesti käytetty. A For silmukka toimii samalla tavalla kuin Some-esimerkki. Asetit kaikki kriteerit arvioinnissa ja asetat sitten cmdletit.

for ($ i = 0; $ i -lt 10; $ i ++) {Sinun vaiheet. }

Tee, kunnes silmukat ovat kuin tekemisen silmukoita, muutat vain Vaikka-lauseen tilalle asti. Esimerkissä käsikirjoituksessa se olisi sama kuin käyttäytyminen. Se on tyylivalinta, mutta Do Who on monipuolisempi muissa tilanteissa. Joten jos muistat vain yhden, Tee vaikka on hyödyllisempi.

powershell foreach silmukat

PowerShellillä on apua myös jokaiselle näistä silmukoista. Saat apua lisäämällä noin ennen silmukan nimeä Get-Help-sovelluksessa. Voit sitten nähdä esimerkkejä ja muita vinkkejä jokaiselle tyypille. Näistä pitäisi olla apua, jos joudut juuttumaan.

Kasvu jatkuu kanssasi

Tässä vaiheessa sinulla on suurin osa taidoista aloittaa vahvojen komentosarjojen rakentaminen. Olipa kotilaitteesi automatisointi 15 Lisätehtäviä PowerShell pystyy käsittelemään Windows 10: ssäPowerShell on samanlainen kuin komentokehote, mutta parempi. Se on tehokas järjestelmänhallintatyökalu. Olemme koonnut 15 tehtävää, joista osa yksinkertaisia, monimutkaisia, ja jotka hyötyvät PowerShellin taikuudesta. Lue lisää tai säästää aikaa työssä, silmukat auttavat skriptejäsi tekemään enemmän. Yhdistämällä nämä silmukat virheenkäsittely siirtää komentosarjan perustason ulkopuolelle Käsittele PowerShell-virheitä kuin pomo näillä vinkilläPowerShell-virheiden käsittelyssä on neljä osaa. Opi korjaamaan virheitä ja paljon muuta Microsoft PowerShellissä. Lue lisää . Tämä avaa oven edistyneemmille kielille.

Mikä on fiksu PowerShell-skripti, jonka olet luonut silmukoilla? Jaa se kanssamme kommenteissa.

Michael ei käyttänyt Macia, kun he olivat tuomittuja, mutta hän osaa koodata Applescript-ohjelmassa. Hänellä on tutkinnot tietojenkäsittelytieteessä ja englannissa; hän on kirjoittanut Macista, iOS: sta ja videopeleistä jo jonkin aikaa; ja hän on ollut päivittäinen IT-apina jo yli vuosikymmenen, erikoistunut komentosarjoihin ja virtualisointiin.