Jak funguje Powershell Foreach, while a další smyčky

  • Michael Cain
  • 0
  • 1561
  • 225
reklama

Klíčovým prvním krokem v učení se programování je práce se smyčkami Absolutní základy programování pro začátečníky (část 2) Absolutní základy programování pro začátečníky (část 2) V části 2 našeho absolutního průvodce pro začátečníky k programování se budu věnovat základní funkce, návratové hodnoty, smyčky a podmíněné. Před řešením tohoto problému si přečtěte část 1, kde jsem vysvětlil .... Naštěstí PowerShell stále roste s vašimi schopnostmi.

Můžete uspořádat stávající příkazy, které používáte každý den ve smyčkách, abyste ušetřili čas a úsilí. Vaše skripty provádějí těžké zvedání, zatímco děláte důležitou práci při čtení dalších článků o MakeUseOf!

Powershell ForEach Loops: Dveře pro pokročilé zpracování dat

ForEach je alias pro objekt ForEach. (Alias ​​je pouze zkratkou pro příkaz v PowerShell.) Je to dobrý čas mluvit o způsobu, jakým PowerShell zpracovává data.

Stejně jako většina moderních programovacích jazyků je i PowerShell objektově orientovaný. Odkud se „objektově orientované“ programování pojmenovalo? Odkud pochází „objektově orientované“ programování? Objektově orientovaný není jen náhodný bzučák, který slyšíte v programovacích kruzích. Za jménem je důvod - ale co? Připojte se ke mně, když prozkoumám některé základy programovacích konceptů a vysvětlím…. Vše v PowerShell je objekt, což znamená, že i proměnné mají rozšířené vlastnosti a funkce. Powershell Cmdlets, které zlepší vaše Windows Admin Skills Powershell Cmdlets, které zlepší vaše Windows Admin Skills Powershell je nástroj pro příkazový řádek a skriptovací jazyk. To vám dává možnost automatizovat počítač pomocí stejných příkazů, které používáte pro jeho správu. . Tato vlastnost je důvodem, proč můžete nastavit vyhledávání na proměnnou a skončit s řadou výsledků.

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

V některých jazycích by zpracování tohoto pole bylo vícestupňovým procesem. Nejprve získáme délku a poté spočítáme každý krok.

V PowerShell projdete maticí a provedete akci na každé z nich pomocí ForEach. To vám ušetří několik řádků kódu, což je užitečné, pokud máte delší skript. Například následující je malý skript, který by používal několik smyček Powershell ForEach. Vytvoří ZIP archiv všech vašich souborů, které jste neotevřeli za 30 dní.

Vytvoření systému archivace souborů pomocí předních smyček

Pojďme rozdělit kroky dolů. Používáš Get-ChildItem získat všechny soubory ve složce Dokumenty. Proměnná prostředí Co jsou proměnné prostředí a jak je mohu použít? [Windows] Co jsou proměnné prostředí a jak je mohu použít? [Windows] Občas se naučím malý tip, který mě nutí myslet si „dobře, kdybych věděl, že před rokem mi to ušetří hodiny času“. Živě si pamatuji učení, jak… $ env: USERPROFILE spustí skript pomocí aktuálního profilu. Tato proměnná je přenosnější než pevně určená cesta. Výsledky tohoto vyhledávání jsou přiřazeny proměnné $ MyDocs. Potom vytvoříme naši smyčku ForEach tím, že ji projdeme každou $ Doc v $ 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 = New-Item -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ()) "-ItemType Directory foreach ($ doc in $ oldDocs) Move-Item -Path $ doc.FullName -Destination" $ ($ ArchiveFolder.FullName) \ $ ($ doc.Name) "-Confirm $ false $ source = $ ArchiveFolder.FullName $ 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 

Uvnitř smyčky zkontrolujeme, zda je každý soubor LastAccessTime vlastnost je starší než 30 dní. Dostáváme to s Získejte datum cmdlet a pomocí AddDays fungovat s negativním třicet. Pokud ano, přidáme soubor do $ myOldDocs pole. Po dokončení třídění souborů vezmeme naše dokončené pole a vytvoříme soubor ZIP. Tento proces je trochu složitější, protože zahrnuje vyvolání trochu .NET. Nebojte se, pokud jej zcela nepochopíte - kód můžete ukrást z tohoto dokumentu nápovědy TechNet.

Abychom rozebrali, co se tady děje: Přesuneme všechny naše staré soubory do nového adresáře pojmenovaného pro dnešní datum po dobu delší než 30 dnů. Jakmile se tato složka vytvoří, musíme vytvořit ZIP archiv se stejným názvem. Provedeme test, abychom se ujistili, že archiv byl úspěšný a že je tam soubor .ZIP, a poté novou složku smažeme. Nastavit jako naplánovanou úlohu tak, aby se spouštěla ​​jednou za měsíc. Ušetřete si trochu místa a udržujte složku Dokumenty čistou.

While and Do while: Loops on Condition

Pokud chcete spustit smyčku, pouze pokud je splněna určitá podmínka, použijte smyčku while. Pokud sledujete počet, používáte proměnnou, nastavte ji jako první.

i = 0, zatímco (i<10) Your Steps i+=1  

Problém je v tom, že pokud nepoužíváte čítač, můžete chtít, aby se váš kód spustil alespoň jednou, i když je test pravdivý. To je případ příkladu skriptu níže. Takže v těchto případech chcete použít smyčku Do-while Jak fungují smyčky Do-while v počítačovém programování Jak fungují smyčky Do-while v počítačovém programování Smyčky jsou jedním z prvních typů řízení, které se naučíte při programování. Pravděpodobně víte něco o smyčkách a smyčkách, ale co se dosáhne smyčky do-while? . Syntaxe se mírně liší.

do Your Steps while (Podmíněné prohlášení) 

Jejich použití není pro začínajícího programátora tak zřejmé. Při běžném každodenním skriptování se do nich nemusíte často vracet. Tam, kde se hodí zejména, je vytvořit provizorní časovač pro testování úspěchu procesu.

Budeme stavět rychlý skript pro restartování vzdáleného počítače a upozornění, pokud se nevrátí zpět do 15 minut. Tento scénář předpokládá, že se jedná o domácí server nebo jiný počítač, který se příliš často nereštartuje. Pokud počítač obvykle přijde rychleji, můžete čas upravit.

Restartujte a zkontrolujte: Použití do-while loop

Tento skript je o něco jednodušší. Nejprve použijete Restartujte počítač příkaz k restartování vzdáleného počítače. (Zde jsme použili fiktivní IP pro příkazy pro restartování, nezapomeňte to přepsat pomocí DNS / IP vašeho počítače). Poté vytvořte proměnnou čítače, i a nastavte ji na 0. Potom máte smyčku Do s funkcí Start-Sleep, která zastaví skript na 300 sekund (pět minut). Druhý příkaz přidá jeden k čítači.

Restartujte počítač - název_počítače 127.0.0.1 i = 0 do Start-Sleep -Seconds 300 $ i + = 1, zatímco ((! (Test-Connection 127.0.0.1 -Quiet))) nebo $ i -gt 3), pokud ( $ i -gt 3) Write-Ouput "Vzdálený počítač neodpovídá, prosím zkontrolujte."  else Write-Output "Reboot Succeeded" 

Pak máme kritéria Zatímco. Použijeme test Or, abychom zajistili, že chyba vygeneruje výstrahu. Alternativou je to, že skript ve smyčce nekonečně čeká na vzdálený stroj. Ke kontrole stroje používáme Testovací připojení cmdlet. Pro jednoduchost je to Ping for PowerShell. Přidáme parametr -Klid což ji nutí k vrácení True nebo False, spíše než výsledků paketů. Druhá část příkazu Or kontroluje, zda je čítač více než tři.

Po dokončení smyčky chceme vytvořit výstup. To znamená, že musíme zkontrolovat náš pult. Toto je rychlé prohlášení if / else. Pokud je větší než tři, skript vydá, že vzdálený počítač neodpovídá. Pokud tomu tak není, znamená to, že restartování proběhlo úspěšně.

Ostatní smyčky

V PowerShell jsou k dispozici dva další typy smyček. Jsou poněkud příbuzní předchozím dvěma smyčkám, prostě nejsou tak běžně používány. Smyčka For funguje podobně jako v příkladu while. Při hodnocení nastavíte všechna kritéria a poté nastavíte cmdlet.

pro ($ i = 0; $ i -lt 10; $ i ++) Vaše kroky 

Do Dokud smyčky nejsou jako Do smyčky, stačí změnit příkaz Zatímco na Until. V příkladu skriptu by to bylo stejné, pokud jde o chování. Je to volba stylu, ale funkce Do while je v jiných situacích všestrannější. Takže pokud si pamatujete pouze jednu, je užitečná funkce Do while.

PowerShell má také nápovědu pro každou z těchto smyček. Pomoc můžete získat přidáním o před názvem smyčky v nápovědě. Poté si můžete prohlédnout příklady a další tipy pro každý typ. Tyto by měly být užitečné, pokud uvíznete.

Pokračovat v růstu s vámi

V tomto okamžiku máte většinu dovedností, abyste mohli začít vytvářet robustní skripty. Ať už automatizace vašeho domácího vybavení 15 Rozšířené úlohy, které zvládne PowerShell v systému Windows 10 15 Rozšířené úlohy, které dokáže PowerShell zvládnout v systému Windows 10 PowerShell je podobný příkazovému řádku, ale lepší. Je to mocný nástroj pro správu systému. Zkompilovali jsme 15 úkolů, z nichž některé jsou jednoduché, některé složité a těží z magie PowerShell. nebo šetříte čas v práci, smyčky pomáhají skriptům dělat více. Kombinace těchto smyček s zpracováním chyb přesouvá vaše skriptování za základní. Zpracovat chyby PowerShell jako šéf s těmito tipy Zpracovat chyby PowerShell jako šéf s těmito tipy Existují čtyři části zpracování chyb PowerShell: parametr Akce akce, bloky Try / Catch, Chyba Proměnný parametr a protokolování. Naučte se, jak je všechny udělat. . Tím se otevřou dveře pro pokročilejší jazyky.

Co je chytrý skript PowerShell, který jste vytvořili pomocí smyček? Sdílejte to s námi v komentářích.




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.