Reklama

Kľúčový prvý krok v roku 2007 učenie programovania pracuje so slučkami Absolútne základy programovania pre začiatočníkov (2. časť)V časti 2 nášho sprievodcu programovaním pre úplných začiatočníkov sa budem venovať základným funkciám, návratovým hodnotám, slučkám a podmienkam. Pred riešením tohto problému si prečítajte prvú časť, kde som vysvetlil ... Čítaj viac . Našťastie, PowerShell naďalej rastie s vašimi schopnosťami.

Existujúce príkazy, ktoré používate každý deň, môžete zarámovať do slučiek, čím ušetríte čas a námahu. Vaše skripty robia ťažkú ​​prácu, zatiaľ čo robíte dôležitú prácu pri čítaní ďalších článkov o MakeUseOf!

Powershell ForEach Loops: Dvere k pokročilému spracovaniu údajov

ForEach je alias pre objekt ForEach. (Alias ​​je iba skratkou pre príkaz v PowerShell.) Je to dobrý čas hovoriť o spôsobe, akým PowerShell spracúva údaje.

Rovnako ako väčšina moderných programovacích jazykov, PowerShell je objektovo orientovaný Odkiaľ pochádza objektovo orientované programovanie?Objektovo orientovaný nie je iba náhodné bzučiak, ktorý počujete v programovacích kruhoch. Za menom je dôvod - ale čo? Pripojte sa ku mne, keď preskúmam niektoré základy programovacích konceptov a vysvetlím ...

instagram viewer
Čítaj viac . Všetko v PowerShell je objekt, čo znamená, že aj premenné majú rozšírené vlastnosti a funkcie Powershell Cmdlets, ktoré zlepšia vaše schopnosti Windows AdminPowershell je nástroj príkazového riadku a skriptovací jazyk. Poskytuje vám možnosť automatizovať počítač pomocou rovnakých príkazov, ktoré používate na jeho správu. Čítaj viac . Táto vlastnosť je dôvodom, prečo môžete nastaviť vyhľadávanie na premennú a nakoniec skončiť s radom výsledkov.

$ yourVar = Get-ChildItem * foreach ($ file in $ yourVar) {Your Steps. }

V niektorých jazykoch by spracovanie tohto poľa bolo viacstupňovým procesom. Najprv získajte dĺžku a potom spočítajte každý krok.

V PowerShell prejdete cez pole a vykonáte akciu na každom z nich pomocou ForEach. Ušetrí vám to niekoľko riadkov kódu, čo je užitočné, ak máte dlhší skript. Nasleduje napríklad malý skript, ktorý by používal niekoľko slučiek Powershell ForEach. Vytvorí archív ZIP všetkých vašich súborov, ktoré ste neotvorili do 30 dní.

Vybudovanie systému archívov pomocou slučiek ForEach

Poďme rozobrať tieto kroky. Používaš Get-ChildItem a získajte všetky súbory v priečinku Dokumenty. Premenná prostredia Čo sú premenné prostredia a ako ich môžem použiť? [Windows]Tu a tam sa naučím malý tip, ktorý ma núti myslieť si „dobre, keby som vedel, že pred rokom by mi to ušetrilo hodiny času“. Živo si pamätám učenie, ako ... Čítaj viac $ env: USERPROFILE spustí skript pomocou aktuálneho profilu. Táto premenná je prenosnejšia ako pevne určená cesta. Výsledky tohto vyhľadávania sú priradené premennej $ MyDocs. Potom vytvoríme našu slučku ForEach tým, že ju prejdeme každou $ Doc in $ MyDocs.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recurse. foreach ($ doc v $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = New-Item -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc in $ oldDocs) {Move-Item -ath $ doc. Celé meno - Destinácia “$ ($ ArchiveFolder. FullName) \ $ ($ doc. Meno) "- Potvrdiť $ false. } $ source = $ ArchiveFolder. Celé meno. $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Name) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ source, $ destination) if (test-path $ destination) {Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }

Vo vnútri slučky skontrolujeme, či je každý súbor LastAccessTime nehnuteľnosť je staršia ako 30 dní. Dostávame to s Get-Date cmdlet a použitie AddDays fungovať s negatívnym tridsať. Ak je, pridáme súbor do súboru $ myOldDocs array. Po dokončení zoradenia súboru potom vezmeme naše vyplnené pole a vytvoríme súbor zip. Tento proces je trochu komplikovanejší, pretože vyžaduje vyvolanie trochu .NET. Nerobte si starosti, ak to úplne nechápete - kód môžete ukradnúť tento dokument pomocníka TechNet.

Ak chcete rozobrať, čo sa tu deje: Všetky naše staré súbory presunieme do nového adresára s názvom dnešného dňa starším ako 30 dní. Po vytvorení tohto priečinka musíme vytvoriť archív ZIP s rovnakým názvom. Budeme testovať, či bol archív úspešný a či je tam súbor .ZIP, a potom nový priečinok odstránime. Nastaviť ako naplánovanú úlohu tak, aby sa spúšťala raz mesačne. Šetríte si trochu miesta a udržujete priečinok Dokumenty čistý.

Kedy a čo robiť: Slučky sú v stave

Ak chcete spustiť slučku iba v prípade splnenia určitej podmienky, použijete slučku while. Ak na sledovanie počítania používate premennú, nastavte ju najprv.

i = 0. while (i <10) {Vaše kroky i + = 1. }

Problém je v tom, že ak nepoužívate počítadlo, možno budete chcieť, aby sa váš kód spustil aspoň raz, aj keď je test pravdivý. Toto je prípad príkladu uvedeného nižšie. Takže v týchto prípadoch chcete použiť slučku Do-while Ako fungujú slučky do-while v počítačovom programovaníSlučky sú jedným z prvých typov ovládacích prvkov, ktoré sa naučíte pri programovaní. Pravdepodobne viete o tom, kedy a pre slučky, ale čo sa dosiahne slučka do-while? Čítaj viac . Syntax sa mierne líši.

{Vaše kroky. } while (Podmienené vyhlásenie)

Ich použitie nie je pre začínajúceho programátora také zrejmé. Ak robíte typické každodenné skriptovanie, nemusíte sa s nimi často stretávať. Tam, kde sa im to hodí, je vytvoriť dočasný časovač na testovanie úspechu procesu.

Budeme zostavovať rýchly skript na reštartovanie vzdialeného počítača a upozornenie, ak sa nevráti späť do 15 minút. Tento scenár predpokladá, že sa jedná o domáci server alebo iný počítač, ktorý sa nereštartuje veľmi často. Ak počítač zvyčajne prichádza rýchlejšie, môžete čas upraviť.

Reštartujte počítač a skontrolujte: Pomocou slučky Do-while Loop

Tento skript je trochu jednoduchší. Najprv použite Restart s počítačom príkaz na reštartovanie vzdialeného počítača. (Použili sme falošnú IP adresu pre reštartovacie príkazy, nezabudnite to prepísať DNS / IP vo vašom počítači). Potom vytvorte premennú počítadla, ja a nastavte ju na 0. Ďalej máte cyklus Do s režimom Start-Sleep, ktorý zastaví skript na 300 sekúnd (päť minút). Druhý príkaz pridá jeden do počítadla.

Reštartovaný počítač - názov počítača 127.0.0.1. i = 0. do {Start-Sleep -Seconds 300 $ i + = 1. } while ((! (Test-Connection 127.0.0.1 -Quiet)) - alebo $ i -gt 3) if ($ i -gt 3) {Write-Ouput "Vzdialený počítač neodpovedá, skontrolujte." } else {Write-Output "Reštartovanie bolo úspešné" }

Potom máme svoje kritériá Zatiaľ čo. Test Or používame na zaistenie toho, aby chyba vygenerovala výstrahu. Alternatívou je skriptovanie nekonečne čakajúce na vzdialený počítač. Na kontrolu stroja používame Test-Connection rutiny. Pre jednoduchosť je to Ping for PowerShell. Pridáme parameter -quiet čo ho núti vracať True alebo False, skôr ako výsledky paketov. Druhá časť výpisu Or kontroluje, či je počítadlo väčšie ako tri.

Po dokončení slučky chceme vytvoriť výstup. To znamená, že musíme skontrolovať náš pult. Toto je rýchle vyhlásenie if / else. Ak je väčší ako tri, výstup skriptu vydá vzdialený počítač nereaguje. Ak nie, znamená to, že reštart bol úspešný.

Ostatné slučky

V PowerShell sú k dispozícii dva ďalšie typy slučiek. Sú trochu spojené s predchádzajúcimi dvoma slučkami, jednoducho nie sú tak často používané. Slučka For For funguje podobne ako v príklade while. Pri hodnotení nastavíte všetky svoje kritériá a potom nastavíte svoje cmdlety.

pre ($ i = 0; $ i -lt 10; $ i ++) {Vaše kroky. }

Do Until sú ako do slučky Do while, stačí zmeniť príkaz while na Until. V príklade skriptu by to bolo rovnaké, pokiaľ ide o správanie. Je to voľba štýlu, ale funkcia Do while je všestrannejšia v iných situáciách. Takže ak si pamätáte iba jednu, je užitočná funkcia Do while.

powerhell foreach slučky

PowerShell má tiež pomoc pre každú z týchto slučiek. Pomoc môžete získať pridaním o pred názvom slučky v Get-Help. Potom môžete vidieť príklady a ďalšie tipy pre každý typ. Mali by ste byť nápomocní, ak uviaznete.

Pokračovať v raste s vami

V tomto okamihu máte väčšinu schopností začať budovať robustné skripty. či automatizácia domácej súpravy 15 Pokročilé úlohy, ktoré PowerShell zvládne v systéme Windows 10PowerShell je podobný príkazovému riadku, ale je lepší. Je to výkonný nástroj na správu systému. Zostavili sme 15 úloh, z ktorých niektoré sú jednoduché a niektoré zložité a ktoré využívajú výhody kúzla PowerShell. Čítaj viac alebo šetríte čas v práci, slučky pomáhajú vašim skriptom robiť viac. Kombinácia týchto slučiek s Pri manipulácii s chybami sa skriptovanie presúva za základy S týmito tipmi riešite chyby PowerShell ako šéfSpracovanie chýb PowerShell má štyri časti. Naučte sa, ako opraviť chyby a ďalšie v Microsoft PowerShell. Čítaj viac . Toto otvára dvere pokročilejším jazykom.

Čo je chytrý skript PowerShell, ktorý ste vytvorili pomocou slučiek? Podeľte sa s nami v komentároch.

Michael nepoužíval Mac, keď boli odsúdení na zánik, ale môže kódovať v Applescript. Vyštudoval informatiku a angličtinu; už chvíľu píše o Mac, iOS a videohrách; a bol dennou IT opičkou už viac ako desať rokov a špecializoval sa na skriptovanie a virtualizáciu.