Skelbimas

Svarbus pirmasis žingsnis programavimo mokymasis yra darbas su kilpomis Absoliutūs programavimo pagrindai pradedantiesiems (2 dalis)Absoliučio pradedančiųjų programavimo vadovo 2 dalyje aprašysiu funkcijų pagrindus, grąžinimo reikšmes, kilpas ir sąlygas. Prieš pradėdami spręsti šią problemą, būtinai perskaitykite 1 dalį, kur paaiškinau ... Skaityti daugiau . Laimei, „PowerShell“ toliau tobulėja kartu su jūsų įgūdžiais.

Norėdami sutaupyti laiko ir pastangų, galite įrėminti esamas komandas, kurias naudojate kiekvieną dieną, naudodamiesi ciklais. Jūsų scenarijai sunkiai keliami, o jūs darote svarbų darbą skaitydami daugiau straipsnių apie „MakeUseOf“!

„Powershell ForEach Loops“: durys į pažangų duomenų tvarkymą

„ForEach“ yra objekto „ForEach“ slapyvardis. (Pseudonimas yra tik komandos „PowerShell“ nuoroda.) Dabar tinkamas laikas kalbėti apie tai, kaip „PowerShell“ tvarko duomenis.

Kaip ir dauguma šiuolaikinių programavimo kalbų, „PowerShell“ yra orientuota į objektus Iš kur atsirado „objekto orientuotas“ programavimas?

instagram viewer
Orientuotas į objektą nėra tik atsitiktinis žodžių junginys, kurį girdite programavimo ratuose. Pavadinimas yra priežastis, tačiau kas? Prisijunkite prie manęs, kai tyrinėju pagrindinius programavimo koncepcijų pagrindus ir paaiškinu ... Skaityti daugiau . Viskas „PowerShell“ yra objektas, reiškiantis, kad net kintamieji turi išplėstines savybes ir funkcijas „Powershell“ rinkiniai, kurie pagerins jūsų „Windows“ administratoriaus įgūdžius„Powershell“ yra lygios dalys komandinės eilutės įrankis ir scenarijų kalba. Tai suteikia galimybę automatizuoti kompiuterį tomis pačiomis komandomis, kurias naudojate jam administruoti. Skaityti daugiau . Dėl šios savybės galite nustatyti paieškas pagal kintamąjį ir pateikti rezultatų masyvą.

$ yourVar = „Gaukite vaiką“ * foreach ($ failas $ yourVar) {Jūsų žingsniai. }

Kai kuriomis kalbomis šio masyvo apdorojimas būtų daugiapakopis procesas. Pirmiausia sužinokite ilgį ir tada suskaičiuokite kiekvieną žingsnį.

Programoje „PowerShell“ galite pereiti per masyvą ir atlikti veiksmus su kiekvienu naudodami „ForEach“. Tai padės sutaupyti kelių kodo eilučių, kurios yra naudingos, jei turite ilgesnį scenarijų. Pvz., Šis yra mažas scenarijus, kuriame būtų naudojama pora „Powershell ForEach“ kilpų. Tai sukuria visų jūsų failų, kurių neatidarėte per 30 dienų, ZIP archyvą.

Failų archyvo sistemos kūrimas naudojant „ForEach Loops“

Nulaužkime žingsnius žemyn. Tu naudoji „Get-ChildItem“ norėdami gauti visus failus aplanke Dokumentai. Aplinkos kintamasis Kas yra aplinkos kintamieji ir kaip juos naudoti? [„Windows“]Retkarčiais išmoksiu po truputį patarimo, kuris verčia susimąstyti, „gerai, jei žinočiau, kad prieš metus tai būtų man sutaupęs valandų valandas“. Aš ryškiai atsimenu, kaip mokiausi ... Skaityti daugiau $ env: USERPROFILE paleidžia scenarijų naudodamas dabartinį profilį. Šis kintamasis yra labiau perkeliamas nei kietas kodas. Tos paieškos rezultatai yra priskiriami kintamajam $ „MyDocs“. Tada mes sukuriame „ForEach“ ciklą, įvesdami jį į kiekvieną $ Doc for $ MyDocs.

$ oldDocs = @ () $ MyDocs = Gauk-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Prekėskite. foreach ($ doc for $ MyDocs) {if ($ doc. LastAccessTime -lt $ (gavimo data) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = Naujas elemento kelias - „$ ($ env: USERPROFILE) \ Documents \ $ ((„ Get-Date -Format MMddyy “.toString ())“ -ItemType Directory. foreach ($ doc in $ oldDocs) {Move-Item -Path $ doc. „FullName -Destination“ $ ($ ArchiveFolder. „FullName“) \ $ ($ doc. Vardas) “- Patvirtinkite $ false. } $ šaltinis = $ ArchiveFolder. Pilnas vardas. $ Destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Vardas) .zip “ Pridėti tipą -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: „CreateFromDirectory“ ($ šaltinis, $ paskirties vieta) if (bandymo kelias $ paskirties vieta) {Pašalinti elementą-Kelias $ ArchiveFolder -Recurse -Confirm $ false. }

Mes patikriname, ar kiekvieno failo nėra „LastAccessTime“ turtas yra senesnis nei 30 dienų. Mes tai gauname su Gavimo data cmdlet ir naudodami „AddDays“ funkcija su neigiamu trisdešimt. Jei yra, pridedame failą į $ myOldDocs masyvas. Kai failo rūšiavimas bus baigtas, mes paimsime užpildytą masyvą ir sukursime ZIP failą. Šis procesas yra šiek tiek sudėtingesnis, nes apima šiek tiek „NET“ iškvietimą. Nesijaudinkite, jei dar nelabai suvokiate - galite pavogti kodą iš šį „TechNet“ pagalbos dokumentą.

Norėdami išskaidyti, kas čia vyksta: Perkelsime visus senus failus į naują katalogą, kuris šiandien yra skirtas senesnei nei 30 dienų. Kai šis aplankas bus sukurtas, turime sukurti to paties pavadinimo ZIP archyvą. Bandysime įsitikinti, kad archyvas pavyko ir jame yra .ZIP failas, tada ištrinsime naują aplanką. Nustatykite tai kaip suplanuotą užduotį, kuri bus vykdoma kartą per mėnesį. Sutaupysite šiek tiek vietos ir išlaikysite savo dokumentų aplanką.

Nors ir daryk kol: kilpos su sąlyga

Jei norite paleisti kilpą tik tada, kai tenkinamos tam tikros sąlygos, naudojate „Nors“ kilpą. Jei skaičiavimui naudojate kintamąjį, nustatykite tai pirmiausia.

i = 0. tuo tarpu (i <10) {Jūsų žingsniai i + = 1. }

Problema ta, kad jei nenaudojate skaitiklio, galbūt norėsite, kad jūsų kodas būtų paleistas bent kartą, net jei testas yra tikras. Tai pasakytina apie scenarijaus pavyzdį žemiau. Taigi tais atvejais norite naudoti „darymo“ ciklą Kaip „ciklų kilpos“ veikia kompiuterinio programavimo metuKilpos yra viena iš pirmųjų valdymo tipų, kurių išmoksite programuodami. Jūs tikriausiai žinote apie laiką, o ne apie kilpas, bet ką daro trumpalaikė kilpa? Skaityti daugiau . Sintaksė šiek tiek skiriasi.

atlikite {Jūsų žingsniai. } o (sąlyginis pareiškimas)

Tai naudoti pradedantiesiems programuotojams nėra taip akivaizdu. Darydami įprastus scenarijus kasdien, galite dažnai jų nepatirti. Kur jie ypač naudingi, yra padaryti greitą laikmatį proceso sėkmės patikrinimui.

Mes ketiname sukurti greitą scenarijų, skirtą iš naujo paleisti nuotolinį kompiuterį ir įspėti, jei jo nepateikia per 15 minučių. Šiame scenarijuje daroma prielaida, kad tai yra namų serveris ar kita mašina, kuri nėra labai dažnai iš naujo paleista. Nesivaržykite koreguoti laiko, jei jūsų kompiuteris paprastai atsiranda greičiau.

Paleiskite iš naujo ir patikrinkite: naudodamiesi atlikimo kilpa

Šis scenarijus yra šiek tiek paprastesnis. Pirma, jūs naudojate Paleiskite kompiuterį iš naujo komanda perkrauti nuotolinį kompiuterį. (Pakartotinio paleidimo komandoms mes panaudojome nepriekaištingą IP, būtinai perrašykite tai naudodami kompiuterio DNS / IP). Tada sukurkite skaitiklio kintamąjį, i ir nustatykite jį į 0. Tada turite „Do“ kilpą su „Start-Sleep“, sustabdydami scenarijų 300 sekundžių (penkias minutes). Antra komanda prideda vieną prie skaitiklio.

Paleiskite kompiuterį iš naujo - kompiuterio vardas 127.0.0.1. i = 0. daryti {Pradėti miegoti - sekundės 300 $ i + = 1. } o ((! (Test-Connection 127.0.0.1 -Quiet)) -arba $ i -gt 3) if ($ i -gt 3) {Write-Ouput "Nuotolinis kompiuteris nereaguoja, patikrinkite." } else {Rašymo išvestis „Perkrauti pavyko“ }

Tada mes turime savo „Nors“ kriterijus. Mes naudojame „Or“ testą, kad įsitikintume, jog gedimas sukelia įspėjimą. Alternatyva yra scenarijus, kuris be galo laukia nuotolinio kompiuterio. Norėdami patikrinti mašiną, naudojame Bandomasis ryšys cmdlet. Paprastumo dėlei tai yra „Ping for PowerShell“. Mes pridedame parametrą -Rami verčianti grąžinti teisingą ar klaidingą, o ne paketų rezultatus. Antroje „Or“ pareiškimo dalyje patikrinama, ar skaitliukas yra didesnis nei trys.

Kai kilpa užbaigiama, norime sukurti išvestį. Tai reiškia, kad turime patikrinti savo prekystalį. Tai yra greitas teiginys. Jei jis yra didesnis nei trys, scenarijus išveda į tai, kad nuotolinis kompiuteris nereaguoja. Jei to nėra, paaiškėja, kad perkraukimas buvo sėkmingas.

Kitos kilpos

„PowerShell“ yra dar dviejų tipų kilpos. Jie yra šiek tiek susiję su ankstesnėmis dviem kilpomis, jie tiesiog nėra tokie įprasti. „A“ kilpa veikia panašiai kaip „Nors“ pavyzdys. Jūs nustatote visus savo kriterijus vertindami, tada nustatykite savo miniatiūras.

už ($ i = 0; $ i -lt 10; $ i ++) {Jūsų žingsniai. }

Daryk, kol kilpos yra panašios į darymo kilpas, tiesiog pakeisk „Nors“ teiginį į „Iki“. Pavyzdiniame scenarijuje tai būtų tas pats, kas elgesys. Tai yra stiliaus pasirinkimas, tačiau kitose situacijose „Daryk“ yra įvairesnis. Taigi, jei prisimenate tik vieną, naudingiau yra atlikti „Daryk“.

PowerShell Foreach kilpos

„PowerShell“ taip pat padeda kiekvienai iš šių linijų. Galite gauti pagalbos pridėję apie prieš kilpos pavadinimą „Get-Help“. Tada galite pamatyti pavyzdžius ir kitus kiekvieno tipo patarimus. Tai turėtų būti naudinga, jei užstrigsite.

Toliau auga kartu su jumis

Šiuo metu jūs turite daugiausiai įgūdžių pradėti kurti patikimus scenarijus. Ar automatizuoti jūsų namų įrenginį 15 papildomų užduočių „PowerShell“ gali veikti „Windows 10“„PowerShell“ yra panašus į komandų eilutę, bet geresnis. Tai galingas sistemos administravimo įrankis. Mes sukūrėme 15 užduočių, kai kurias paprastas, sudėtingas, kurios naudingos „PowerShell“ magija. Skaityti daugiau arba taupant laiką darbe, kilpos padeda scenarijams padaryti daugiau. Derinant šias kilpas su klaidų tvarkymas perkelia scenarijų už pagrindų ribų Remdamiesi šiais patarimais, tvarkykite „PowerShell“ klaidas kaip bosas„PowerShell“ klaidų tvarkymas susideda iš keturių dalių. Sužinokite, kaip ištaisyti klaidas ir dar daugiau „Microsoft PowerShell“. Skaityti daugiau . Tai atveria duris į sudėtingesnes kalbas.

Kas yra protingas „PowerShell“ scenarijus, kurį sukūrėte naudodami kilpas? Pasidalinkite ja su mumis komentaruose.

Michaelas nenaudojo „Mac“, kai jie buvo pasmerkti, tačiau jis gali koduoti „Applescript“. Jis turi informatikos ir anglų kalbos laipsnius; jis jau kurį laiką rašo apie „Mac“, „iOS“ ir vaizdo žaidimus; ir jau daugiau nei dešimtmetį jis yra dienos IT beždžionė, kurios specializacija yra scenarijų kūrimas ir virtualizavimas.