Oglas

Ključni prvi korak programiranje učenja radi s petljom Apsolutne osnove programiranja za početnike (2. dio)U drugom dijelu naših apsolutnih vodiča za programiranje početnika opisat ću osnove funkcija, povratne vrijednosti, petlje i uvjeti. Provjerite jeste li pročitali prvi dio prije nego što se riješite ovoga, gdje sam objasnio ... Čitaj više . Srećom, PowerShell nastavlja rasti s vašom vještinom.

Možete uokviriti postojeće naredbe koje svakodnevno koristite unutar petlji kako biste uštedjeli vrijeme i trud. Vaše skripte poduzimaju veliko dizanje dok radite važan posao čitanja više članaka o MakeUseOf-u!

Powershell ForEach petlje: vrata za naprednije rukovanje podacima

ForEach je alias za ForEach-objekt. (Alias ​​je samo prečac za naredbu u PowerShellu.) Ovo je pravo vrijeme za razgovor o načinu na koji PowerShell obrađuje podatke.

Kao i većina modernih programskih jezika, PowerShell je objektno orijentiran Odakle je "Objektno orijentirano" programiranje dobilo svoje ime?Objektno orijentirana nije samo slučajna glasina koju čujete u programskim krugovima. Postoji razlog iza imena - ali što? Pridružite mi se dok istražujem neke osnove programskih koncepata i objašnjavam ...

Čitaj više . Sve u PowerShell-u je objekt, što znači čak i varijable imaju proširena svojstva i funkcije Powershell Cmdlets koji će poboljšati vaše Windows Admin SkillsPowershell je jednaki dijelovi alata naredbenog retka i jezika skripti. Pruža vam mogućnost automatizacije vašeg računala pomoću istih naredbi koje koristite za njegovo upravljanje. Čitaj više . To svojstvo je razlog zašto možete postaviti pretraživanja na varijablu i završiti s nizom rezultata.

$ yourVar = Get-ChildItem * foreach ($ datoteka u $ yourVar) {Vaši koraci. }

U nekim jezicima obrada ovog polja bio bi postupak s više koraka. Prvo uzimajući duljinu, a zatim odbrojava svaki korak.

U PowerShellu ćete prijeći niz i izvesti radnju na svakom od njih koristeći ForEach. Tako ćete uštedjeti nekoliko redaka koda, što je korisno ako imate dulju skriptu. Na primjer, u nastavku je mala skripta koja bi koristila nekoliko snaga Powershell ForEach. Stvara ZIP arhivu svih datoteka koje niste otvorili u roku od 30 dana.

Izgradnja sustava arhivskih datoteka koristeći petlje ForEach

Razbijmo korake dolje. Ti koristiš Get-ChildItem da biste dobili sve datoteke u mapi Dokumenti. Promjenljiva okolina Što su varijable okoline i kako ih mogu koristiti? [Windows]S vremena na vrijeme naučit ću mali savjet zbog kojeg ću razmišljati "dobro, da sam to znao prije godinu dana, to bi mi uštedjelo sate vremena". Živo se sjećam kako sam učio kako ... Čitaj više $ env: USERPROFILE pokreće skriptu koristeći trenutni profil. Ova je varijabla prenosivija od puta koji je tvrdo kodiran. Rezultati te pretrage dodijeljeni su varijabli $ MyDocs. Zatim kreiramo našu petlju ForEach provodeći je kroz svaki $ Doc u $ MyDocs.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recurse. foreach ($ doc u $ MyDocs) {if ($ doc. LastAccessTime -lt $ (datum-datum) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = New-Item-Put "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc u $ oldDocs) {Move-Item-Put $ doc. FullName -Odredba "$ ($ ArchiveFolder. FULLNAME) \ $ ($ doc. Ime) "-Potvrdite $ false. } $ source = $ ArchiveFolder. Puno ime. $ odredište = "$ ($ env: USERPROFILE) \ Dokumenti \ $ ($ ArchiveFolder. Ime) .zip” Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ izvor, $ odredište) ako (test-put $ odredište) {Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }

Unutar petlje provjeravamo ima li svaka datoteka LastAccessTime imanje je starije od 30 dana. To ćemo dobiti s Get-datum cmdlet i pomoću AddDays funkcija s negativnom tridesetom. Ako postoji, datoteku dodamo u $ myOldDocs polje. Nakon dovršavanja datoteke, uzimamo dovršeni niz i stvaramo zip datoteku. Ovaj je postupak malo složeniji jer uključuje prizivanje malo .NET-a. Ne brinite ako ih ne razumijete, možete ukrasti kod ovaj dokument pomoći za TechNet.

Kako bismo raščistili što se ovdje događa: preselit ćemo sve svoje stare datoteke u novi direktorij koji je imenovan za današnji datum starijim od 30 dana. Kad se ta mapa izgradi, moramo stvoriti istoimeni arhiv ZIP. Testirat ćemo da se provjeri je li arhiva uspjela i .ZIP datoteka je tamo, a zatim izbrisati novu mapu. Postavite ovo kao planirani zadatak koji se izvodi jednom mjesečno. Uštedjet ćete malo prostora i održavati čistu mapu Dokumenti.

Dok i učini dok: petlje na stanje

Ako želite pokrenuti petlju samo kada je ispunjen određeni uvjet, koristite petlju Dok. Ako koristite varijablu za praćenje broja, prvo je postavite.

i = 0. dok je (i <10) {Vaši koraci i + = 1. }

Problem je u tome što, ako ne koristite brojač, možda biste htjeli da se vaš kod pokrene barem jednom, čak i ako je test istinit. To je slučaj sa primjerom skripte u nastavku. U tim slučajevima želite koristiti petlju Do-Dok Kako rade petlje u računalnom programiranjuPetlje su jedna od prvih vrsta kontrole koje ćete naučiti u programiranju. Vjerojatno znate za vrijeme i za petlje, ali što postiže petlja "dok traje"? Čitaj više . Sintaksa je malo drugačija.

učinite {Vaši koraci. } while (Uvjetna izjava)

Njihova upotreba nije tako očigledna početnicima programerima. Izvodeći tipične svakodnevne skripte, možda nećete naići na njih tako često. Tamo gdje su posebno korisni, je napraviti improviziran tajmer za testiranje uspjeha nekog procesa.

Napravit ćemo brzu skriptu za ponovno pokretanje udaljenog stroja i upozorenje ako se ne vrati u roku od 15 minuta. Ovaj scenarij pretpostavlja da je riječ o kućnom poslužitelju ili drugom stroju koji se ne restartuje vrlo često. Slobodno prilagodite vrijeme ako se računalo obično brže pojavi.

Ponovno pokrenite i provjerite: pomoću Do-while petlje

Ova je skripta malo jednostavnija. Prvo se poslužite se Restart i računala naredba za ponovno pokretanje udaljenog stroja. (Ovdje smo koristili lažni IP za naredbe za ponovno pokretanje. Svakako prebrisati ovo s DNS / IP vašeg računala). Zatim stvorite varijablu brojača, ja i postavite na 0. Zatim imate svoju petlju Do s zaustavljanjem skripte tijekom 300 sekundi (pet minuta). Druga naredba dodaje jednu na brojač.

Restart-Computer -ComputerName 127.0.0.1. i = 0. učinite {Start-Sleep -sekunde 300 $ i + = 1. } while ((! (test-veza 127.0.0.1-tišina)) -or $ i -gt 3) ako ($ i -gt 3) {Write-Ouput "Udaljeni stroj ne odgovara, provjerite." } else {Write-Output "Ponovno pokretanje je uspjelo" }

Tada imamo svoje kriterije Iako. Koristimo test Ili kako bismo osigurali da neuspjeh generira upozorenje. Alternativa je skripta koja beskrajno čeka na udaljeni stroj. Za provjeru stroja koristimo Test-veza cmdlet. Radi jednostavnosti, ovo je Ping za PowerShell. Dodajemo parametar -Miran što ga prisiljava da vrati Istinu ili Netačno, a ne rezultate paketa. Drugi dio izjave Or provjerava je li brojač više od tri.

Nakon što se petlja dovrši, želimo stvoriti izlaz. To znači da moramo provjeriti svoj brojač. Ovo je brza izjava if / else. Ako je veći od tri, izlaz skripte na koji udaljeni uređaj ne reagira. Ako nije, ispada da je ponovno pokretanje bilo uspješno.

Ostale petlje

U PowerShellu su dostupne dvije druge petlje. Oni su donekle povezani s prethodne dvije petlje, jednostavno se ne koriste tako često. A For petlja djeluje slično kao na primjeru while. U ocjenjivanju postavljate sve svoje kriterije, a zatim postavljate svoje cmdlete.

za ($ i = 0; $ i -lt 10; $ i ++) {Vaši koraci. }

Do, dok petlje nisu kao petlje Do, samo promijenite izraz Dok u. U primjeru skripte bilo bi isto što i u ponašanju. To je izbor stila, ali Do dok je svestraniji u drugim situacijama. Dakle, ako se sjećate samo jednog, Do Dok je korisniji.

powerhell foreach petlje

PowerShell također ima pomoć za svaku od ovih petlji. Pomoć možete dobiti dodavanjem oko prije naziva petlje u Get-Help. Tada možete vidjeti primjere i druge savjete za svaku vrstu. Ovo bi vam trebalo biti od pomoći ako se zaglavite.

Nastavljajući rast sa vama

U ovom trenutku imate većinu vještina za početak izrade robusnih skripti. Da li automatizirati kućnu instalaciju 15 Napredni zadaci PowerShell se može nositi u sustavu Windows 10PowerShell je sličan naredbenom retku, ali bolji. To je moćan alat za administraciju sustava. Sastavili smo 15 zadataka, nekoliko jednostavnih, složenih, koji imaju koristi od čarolije PowerShell-a. Čitaj više ili štedite vrijeme na poslu, petlje pomažu vašim skriptama da učine više. Kombiniranje ovih petlji sa rukovanje pogreškama vaše scenarije pomiče dalje od osnova Pomoću ovih savjeta rukujte s pogreškama PowerShell-a kao šefPowerShell rukovanje pogreškama ima četiri dijela. Saznajte kako ispraviti pogreške i više u programu Microsoft PowerShell. Čitaj više . Ovo otvara vrata naprednijim jezicima.

Što je pametna skripta PowerShell koju ste stvorili pomoću petlji? Podijelite to s nama u komentarima.

Michael nije koristio Mac kada su bili osuđeni, ali može se kodirati u Applescript. Diplomirao je informatiku i engleski jezik; već neko vrijeme piše o Macu, iOS-u i video igrama; i bio je svakodnevni IT majmun više od desetljeća, specijalizirao se za scenarije i virtualizaciju.