reklama

Klíčový první krok v roce 2007 učení programování pracuje se smyčkami Absolutní základy programování pro začátečníky (část 2)V části 2 našeho průvodce pro absolutní začátečníky k programování se budu věnovat základům funkcí, návratových hodnot, smyček a podmíněností. Před vyřešením tohoto problému si přečtěte část 1, kde jsem vysvětlil ... Přečtěte si více . 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.

Jako většina moderních programovacích jazyků, PowerShell je objektově orientovaný 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 ...

instagram viewer
Přečtěte si více . Všechno v PowerShell je objekt, což znamená, že i proměnné mají rozšířené vlastnosti a funkce Powershell Cmdlets, které zlepší vaše Windows Admin dovednostiPowershell je nástroj příkazového řádku se stejnými částmi a skriptovací jazyk. Poskytuje vám možnost automatizovat počítač pomocí stejných příkazů, které používáte pro jeho správu. Přečtěte si více . 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 rozejít kroky. 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? [Okna]Tu a tam 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 ... Přečtěte si více $ 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 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 -Path $ doc. FullName - Destination "$ ($ ArchiveFolder. CeléJméno) \ $ ($ doc. Jméno) "- Potvrdit $ false. } $ source = $ ArchiveFolder. Celé jméno. $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Jméno) .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. Nedělejte si starosti, pokud jej zcela nechápete - kód můžete ukrást tento dokument 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 používáte proměnnou ke sledování počtu, nastavte ji jako první.

i = 0. while (i <10) {Vaše kroky 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íSmyčky jsou jedním z prvních typů ovládacích prvků, 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? Přečtěte si více . Syntaxe se mírně liší.

{Vaše kroky. } 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.

Chystáme vytvořit 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. (Pro restartovací příkazy jsme zde použili falešnou IP adresu. Nezapomeňte to přepsat pomocí DNS / IP vašeho počítače). Pak vytvořte proměnnou čítače, i a nastavte ji na 0. Dále 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.

Restartovat počítač - název počítače 127.0.0.1. i = 0. do {Start-Sleep -Seconds 300 $ i + = 1. } while ((! (Test-Connection 127.0.0.1 -Quiet)) - nebo $ i -gt 3) if ($ 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žíváme 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 Nebo zkontroluje, 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í, bude to znamenat, že restartování proběhlo úspěšně.

Ostatní smyčky

V PowerShell jsou k dispozici dva další typy smyček. Jsou do jisté míry 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ší. Pokud si tedy pamatujete pouze jednu, je užitečná funkce Do while.

powerhell foreach smyčky

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čování v růstu s vámi

V tomto okamžiku máte většinu dovedností, abyste mohli začít vytvářet robustní skripty. Zda automatizace vaší domácí soupravy 15 Pokročilé úlohy PowerShell zvládne v systému Windows 10PowerShell 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 které využívají kouzla PowerShell. Přečtěte si více nebo šetříte čas v práci, smyčky pomáhají vašim skriptům dělat více. Kombinace těchto smyček s Chyba při manipulaci přesune skriptování nad rámec základů S těmito tipy zacházejte s chybami PowerShell jako s šéfemZpracování chyb PowerShell má čtyři části. Naučte se, jak opravit chyby a další v Microsoft PowerShell. Přečtěte si více . 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.

Michael nepoužíval Mac, když byli odsouzeni k zániku, ale může kódovat v Applescriptu. Vystudoval informatiku a angličtinu; už nějakou dobu píše o Mac, iOS a videohrách; a už přes deset let je denní IT opicí, specializující se na skriptování a virtualizaci.