Reklāma

Izšķirošs pirmais solis programmēšanas apguve ir darbs ar cilpām Programmēšanas absolūtie pamati iesācējiem (2. daļa)Mūsu absolūtā programmēšanas rokasgrāmata iesācējiem 2. daļā es apskatīšu funkciju pamatus, atgriešanās vērtības, cilpas un nosacījumus. Pārliecinieties, ka esat lasījis 1. daļu, pirms sākat to risināt, kur es paskaidroju ... Lasīt vairāk . Par laimi, PowerShell turpina augt ar jūsu prasmēm.

Lai ietaupītu laiku un pūles, varat ierāmēt esošās komandas, kuras katru dienu izmantojat cilpās. Jūsu skripti smagi paceļ, kamēr jūs veicat svarīgu darbu, lasot vairāk rakstus par MakeUseOf!

Powershell ForEach Loops: durvis uz uzlabotu datu apstrādi

ForEach ir objekta ForEach aizstājvārds. (Alias ​​ir tikai komandas saīsne programmā PowerShell.) Šis ir labs laiks, lai runātu par veidu, kā PowerShell apstrādā datus.

Tāpat kā vairums mūsdienu programmēšanas valodu, PowerShell ir orientēts uz objektu Kur ieguva nosaukumu “Object Oriented”?Object Oriented nav tikai nejaušs buzzword, ko dzirdat programmēšanas aprindās. Vārdam ir iemesls - bet kas? Pievienojieties man, izpētot dažus programmēšanas jēdzienu pamatus un skaidrojot ...

instagram viewer
Lasīt vairāk . Viss PowerShell ir objekts, kas nozīmē, ka pat mainīgie ir paplašinātas īpašības un funkcijas Powershell kopas, kas uzlabos jūsu Windows administratora prasmesPowershell ir vienādās daļās komandrindas rīks un skriptu valoda. Tas dod jums iespēju automatizēt datoru, izmantojot tās pašas komandas, kuras izmantojat tā administrēšanai. Lasīt vairāk . Šis īpašums ir iemesls, kāpēc jūs varat iestatīt meklēšanu mainīgajā, un galu galā parādīt rezultātu masīvu.

$ yourVar = Get-ChildItem * foreach ($ fails $ yourVar) {Tavi soļi. }

Dažās valodās šī masīva apstrāde būtu daudzpakāpju process. Pirmkārt, iegūstot garumu un pēc tam saskaitot katru soli.

Programmā PowerShell jūs izvēlaties masīvu un veicat darbību ar katru, izmantojot ForEach. Tas ietaupa vairākas koda rindas, kas ir noderīgi, ja jums ir garāks skripts. Piemēram, šis ir mazs skripts, kurā tiktu izmantotas pāris Powershell ForEach cilpas. Tas izveido ZIP arhīvu visiem failiem, kurus 30 dienu laikā neesat atvēris.

Failu arhīvu sistēmas izveidošana, izmantojot ForEach Loops

Izjauksim soļus uz leju. Jūs izmantojat Get-ChildItem lai iegūtu visus failus mapē Dokumenti. Vides mainīgais Kas ir vides mainīgie un kā tos izmantot? [Windows]Ik pa laikam es iemācīšos nelielu padomu, kas liek man aizdomāties "labi, ja es zināju, ka pirms gada, tad tas man būtu ietaupījis stundu laiku". Es spilgti atceros, kā iemācījos ... Lasīt vairāk $ env: USERPROFILE palaiž skriptu, izmantojot pašreizējo profilu. Šis mainīgais ir vairāk pārnēsājams nekā cietā koda ceļš. Šīs meklēšanas rezultāti tiek piešķirti mainīgajam $ MyDocs. Pēc tam mēs izveidojam savu ForEach cilpu, palaižot to cauri katram $ Doc pakalpojumā $ MyDocs.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Pārskaits. foreach ($ doc pakalpojumā $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = Jauns vienums -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc in $ oldDocs) {Pārvietot vienumu -Path $ doc. FullName -Destination "$ ($ ArchiveFolder. FullName) \ $ ($ doc. Vārds) "-apstipriniet $ false. } $ avots = $ ArchiveFolder. Pilnais vārds. $ Destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Nosaukums) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ avots, $ galamērķis) if (testa ceļš $ galamērķis) {Noņemt vienumu -Path $ ArchiveFolder -Recurse -Confirm $ false. }

Cilpas iekšpusē mēs pārbaudām, vai katrs fails ir LastAccessTime īpašums ir vecāks par 30 dienām. Mēs to iegūstam Get-Date cmdlet un izmantojot AddDays funkcija ar negatīvu trīsdesmit. Ja tas ir, mēs pievienojam failu $ myOldDocs masīvs. Kad failu kārtošana ir pabeigta, mēs paņemam pabeigto masīvu un izveidojam zip failu. Šis process ir nedaudz sarežģītāks, jo tas ietver mazliet .NET atsaukšanu. Neuztraucieties, ja jūs to gluži nesaprotat - varat nozagt kodu no šis TechNet palīdzības dokuments.

Lai sadalītu šeit notiekošo: mēs visus savus vecos failus pārvietosim uz jaunu direktoriju, kura nosaukums ir šodienas datums un kas ir vecāks par 30 dienām. Kad šī mape tiek izveidota, mums ir jāizveido tāda paša nosaukuma ZIP arhīvs. Mēs pārbaudīsim, lai pārliecinātos, ka arhīvs ir izdevies un .ZIP fails ir, un pēc tam izdzēsiet jauno mapi. Iestatiet to kā ieplānotu uzdevumu, kas jāveic reizi mēnesī. Jūs nedaudz ietaupīsit vietu un mapi Dokumenti būs tīrs.

Kamēr un dariet kamēr: cilpas stāvoklī

Ja vēlaties palaist cilpu tikai tad, ja ir izpildīts noteikts nosacījums, izmantojat cilpu Kamēr. Ja uzskaitei izmantojat mainīgo, iestatiet to vispirms.

i = 0. savukārt (i <10) {Tavi soļi i + = 1. }

Problēma ir tā, ka, ja jūs neizmantojat skaitītāju, iespējams, vēlēsities, lai jūsu kods darbotos vismaz vienu reizi, pat ja pārbaude ir pareiza. Tas attiecas uz zemāk redzamo skripta piemēru. Tātad tajos gadījumos vēlaties izmantot cilpu “Darīšana” Kā cilpas darbojas datorprogrammēšanāCilpas ir viens no pirmajiem vadības veidiem, ko iemācīsities programmēšanā. Jūs, iespējams, zināt par laiku un par cilpām, bet ko dara īslaicīga cilpa? Lasīt vairāk . Sintakse ir nedaudz atšķirīga.

veiciet {Tavi soļi. } kamēr (nosacīts paziņojums)

To izmantošana nav tik acīmredzama iesācēju programmētājam. Veicot tipiskus ikdienas skriptus, jūs, iespējams, neuztverat tos tik bieži. Tie, kas viņiem īpaši noder, ir padarīt tūlītēju taimeri procesa veiksmes pārbaudei.

Mēs izstrādāsim ātru skriptu, lai atsāknētu attālo mašīnu un brīdinātu, ja tas netiks atjaunots 15 minūšu laikā. Šajā scenārijā tiek pieņemts, ka tas ir mājas serveris vai cita iekārta, kas netiek bieži atsāknēta. Jūtieties brīvi pielāgot laiku, ja parasti jūsu dators parādās ātrāk.

Atsāknēšana un pārbaude: izmantojot darīšanas ciklu

Šis skripts ir nedaudz vienkāršāks. Pirmkārt, jūs izmantojat Restartējiet datoru komanda atsāknēt attālo mašīnu. (Atsāknēšanas komandām šeit mēs izmantojām fiktīvu IP, noteikti pārrakstiet to ar datora DNS / IP). Pēc tam izveidojiet skaitītāja mainīgo, i un iestatiet to uz 0. Pēc tam jums ir sava Do cilpa ar Start-Sleep, apturot skriptu uz 300 sekundēm (piecām minūtēm). Otra komanda pievieno vienu skaitītājam.

Restartēt datoru -DatoraNosaukums 127.0.0.1. i = 0. dariet {Start-Sleep -Sekundē 300 $ i + = 1. } kamēr ((! (Test-Connection 127.0.0.1 -Quiet)) vai $ i -gt 3) if ($ i -gt 3) {Write-Ouput "Attālā mašīna nereaģē, lūdzu, pārbaudiet." } else {Rakstīšanas izvade "Reboot Succeched" }

Tad mums ir mūsu Kaut kritēriji. Mēs izmantojam Or pārbaudi, lai pārliecinātos, ka kļūme rada trauksmi. Alternatīva ir skripts, kas bezgalīgi gaida attālo mašīnu. Lai pārbaudītu, vai mašīna nav pieejama, mēs izmantojam Pārbaudes savienojums cmdlet. Vienkāršības labad tas ir Ping for PowerShell. Mēs pievienojam parametru -Kluss kas liek atgriezt patiesu vai nepatiesu, nevis pakešu rezultātus. Or paziņojuma otrajā daļā tiek pārbaudīts, vai skaitītājs ir lielāks par trim.

Kad cilpa ir pabeigta, mēs vēlamies izveidot izvadi. Tas nozīmē, ka mums ir jāpārbauda mūsu skaitītājs. Šis ir ātrs paziņojums, ja / cits. Ja tas ir lielāks par trim, skripts izvada, ka attālā mašīna nereaģē. Ja tā nav, tiek parādīts, ka atsāknēšana bija veiksmīga.

Citas cilpas

Programmā PowerShell ir pieejami vēl divu veidu cilpas. Tie ir nedaudz saistīti ar iepriekšējām divām cilpām, tie vienkārši nav tik bieži izmantoti. A For cilpa darbojas līdzīgi kā Some piemērs. Novērtējumā jūs iestatāt visus savus kritērijus, pēc tam iestatot cmdlet.

par ($ i = 0; $ i -lt 10; $ i ++) {Jūsu soļi. }

Darīt, kamēr cilpas ir tādas, kā cilpas Darīt, kamēr pārskats Kamēr tiek mainīts uz Līdz. Skripta piemērā tas būtu tāds pats kā izturēšanās. Tā ir stila izvēle, bet citās valstīs situācijas ir daudzveidīgākas. Tātad, ja atceraties tikai vienu, noderīgāks ir Do Do.

powershell foreach cilpas

PowerShell palīdz arī katra no šīm cilpām. Jūs varat saņemt palīdzību, pievienojot par pirms cilpas nosaukuma Get-Help. Pēc tam jūs varat redzēt piemērus un citus padomus katram tipam. Tiem vajadzētu būt noderīgiem, ja iestrēdzat.

Turpinot augt kopā ar jums

Šajā brīdī jums ir vairums iemaņu, lai sāktu veidot stabilus skriptus. Vai automatizējot jūsu mājas platformu 15 uzlaboti uzdevumi Ar PowerShell var rīkoties operētājsistēmā Windows 10PowerShell ir līdzīgs komandu uzvednei, bet labāks. Tas ir jaudīgs sistēmas administrēšanas rīks. Mēs esam apkopojuši 15 uzdevumus, dažus vienkāršus, dažus sarežģītus, kas gūst labumu no PowerShell burvības. Lasīt vairāk vai ietaupot laiku darbā, cilpas palīdz jūsu skriptiem darīt vairāk. Apvienojot šīs cilpas ar Kļūdu apstrāde pārceļ skriptu ārpus pamatiem Izmantojot šos padomus, rīkojieties ar PowerShell kļūdām kā bossPowerShell kļūdu apstrādē ir četras daļas. Uzziniet, kā koriģēt kļūdas un citas iespējas programmā Microsoft PowerShell. Lasīt vairāk . Tas paver iespējas progresīvākām valodām.

Kas ir gudrs PowerShell skripts, kuru esat izveidojis, izmantojot cilpas? Dalieties tajā ar mums komentāros.

Maikls neizmantoja Mac, kad viņi bija lemti, bet viņš var kodēt Applescript. Viņam ir grādi datorzinātnēs un angļu valodā; viņš kādu laiku raksta par Mac, iOS un videospēlēm; un viņš ir bijis IT mērkaķis dienas laikā vairāk nekā desmit gadus, specializējoties skriptu veidošanā un virtualizācijā.