Kako Powershell prednjači, dok i druge petlje rade

  • Michael Cain
  • 0
  • 4916
  • 530
Oglas

Ključni prvi korak u učenju programiranja je rad s petljama Apsolutne osnove programiranja za početnike (2. dio) Apsolutne osnove programiranja za početnike (2. dio) U drugom dijelu naših apsolutnih vodiča za programiranje za početnike, ja ću pokriti osnove funkcija, povratne vrijednosti, petlje i uvjeti. Obavezno pročitajte 1. dio prije nego što se pozabavite tim problemom, gdje sam objasnio…. 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 podizanje dok obavljate važan posao čitanja više članaka o MakeUseOf!

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 Gdje je „Objektno orijentirano“ programiranje dobilo ime? Odakle je "Objektno orijentirano" programiranje dobilo svoje ime? Objektno orijentirana nije samo slučajna buzzword koju čujete u programskim krugovima. Postoji razlog iza imena - ali što? Pridružite mi se dok istražujem neke osnove programskog koncepta i objašnjavam…. Sve u PowerShell-u je objekt, što znači da čak i varijable imaju proširena svojstva i funkcije Powershell Cmdlets koji će poboljšati vaše Windows Admin Skills Powershell Cmdlets koji će poboljšati vaše Windows Admin Skills Powershell je jednaki dijelovi alata naredbenog retka i jezika skriptiranja. Pruža vam mogućnost automatizacije vašeg računala pomoću istih naredbi koje koristite za njegovo upravljanje. , To svojstvo je razlog zašto možete postaviti pretraživanje 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 petlji Powershell ForEach. Stvara ZIP arhivu svih datoteka koje niste otvorili u roku od 30 dana.

Izgradnja sustava arhivskih datoteka koristeći petlje ForEach

Prekidamo korake. Ti koristiš Get-ChildItem da biste dobili sve datoteke u mapi Dokumenti. Promjenjiva okolina Što su varijable okoline i kako ih mogu koristiti? [Windows] Što su varijable okoline i kako ih mogu koristiti? [Windows] S vremena na vrijeme naučit ću mali savjet zbog kojeg razmišljam „dobro, da sam to znao prije godinu dana, to bi mi uštedjelo sate vremena“. Živo se sjećam kako sam učio kako ... $ 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 in $ MyDocs) if ($ doc.LastAccessTime -lt $ (Get-Date) .addDays (-30)) $ oldDocs + = $ doc $ ArchiveFolder = Nova stavka-put "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ()) "-ItemType Directory foreach ($ doc u $ oldDocs) Move-Item -Path $ doc.FullName -Odredenje" $ ($ ArchiveFolder.FullName) \ $ ($ doc.Name) "-Confirm $ false $ source = $ ArchiveFolder.FullName $ target = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder.Name) .zip" Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile] :: CreateFromDirectory ($ izvor, $ odredište) if (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 shvaćate u potpunosti - možete ukrasti kôd iz ovog TechNet dokumenta pomoći.

Kako bismo slomili što se ovdje događa: Premjestit ćemo sve naše stare datoteke u novi direktorij nazvan današnjim datumom starijim od 30 dana. Kad se ta mapa izgradi, moramo stvoriti istoimeni arhiv ZIP. Testirat ćemo da provjerimo 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 Documents.

Dok i učini dok: petlje na stanje

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

i = 0 dok (i<10) Your Steps 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 petlje rade dok se rade u računalnom programiranju Kako petlje dok rade dok rade u petljama za programiranje jedan su od prvih tipova kontrole koje ćete naučiti u programiranju. Vjerojatno znate za vrijeme i za petlje, ali što postiže petlja "dok traje"? , Sintaksa je malo drugačija.

učinite Vaši koraci dok (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 upozoriti 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 petlje Do-while

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 ga na 0. Dalje, imate Do-petlju s Start-Sleep zaustavljanjem skripte na 300 sekundi (pet minuta). Druga naredba dodaje jednu na brojač.

Ponovo pokrenite računalo -ComputerName 127.0.0.1 i = 0 učinite Start-Sleep -Sekunde 300 $ i + = 1, dok ((! (Test-Connection 127.0.0.1 -Tehno)) -or $ i -gt 3) ako ( $ i -gt 3) Write-Ouput "Udaljeni stroj ne reagira, provjerite."  else Write-Output "Ponovno pokretanje je uspjelo" 

Tada imamo svoje kriterije Iako. Koristimo test Or 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 Lažnost, 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, ispituje se 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, ali samo promijenite izraz „Dok“. U primjeru skripte bilo bi isto što i u ponašanju. To je izbor stila, ali Do dok je svestraniji u drugim situacijama. Ako se sjećate samo jednog, Do Dok je korisniji.

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. Bilo da je automatiziranje kućne instalacije 15 Napredni zadaci PowerShell se može nositi u sustavu Windows 10 15 Napredni zadaci PowerShell Can Handle u sustavu Windows 10 PowerShell slično je naredbenom retku, ali još bolje. To je moćan alat za administraciju sustava. Sastavili smo 15 zadataka, nekoliko jednostavnih, složenih, koji imaju koristi od čarolije PowerShell-a. ili štedite vrijeme na poslu, petlje pomažu vašim skriptama da učine više. Kombinacija ovih petlji s postupkom s pogreškama pomiče vaš scenarij izvan osnova Rukovanje greškama PowerShell-a poput šefa s ovim savjetima Rukovanje pogreškama PowerShell-a poput šefa s ovim savjetima Postoje četiri dijela za upravljanje pogreškama u PowerShell-u: parametar Error Action, Try / Catch blokovi, Parametar varijable pogreške i evidentiranje. Naučite kako ih sve napraviti. , Ovo otvara vrata naprednijim jezicima.

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




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.