Oglas

Ključni prvi korak učenje programiranja deluje z zankami Absolutne osnove programiranja za začetnike (2. del)V drugem delu našega absolutnega vodnika za programiranje za začetnike bom opisal osnove funkcij, povratne vrednosti, zanke in pogoje. Prepričajte se, da ste prebrali 1. del, preden ste se ga lotili, kjer sem pojasnil ... Preberi več . Na srečo PowerShell s svojimi veščinami še naprej raste.

Okvirjate lahko obstoječe ukaze, ki jih uporabljate vsak dan znotraj zank, da prihranite čas in trud. Vaši scenariji se težko dvignejo, medtem ko opravljate pomembno delo pri branju več člankov o MakeUseOf!

Powershell ForEach zanke: vrata do naprednega upravljanja podatkov

ForEach je vzdevek for-ForEach-objekta. (Alias ​​je zgolj bližnjica za ukaz v PowerShellu.) To je pravi čas za pogovor o načinu, kako PowerShell obdeluje podatke.

Kot večina sodobnih programskih jezikov PowerShell je objektno usmerjen Od kod je "objektno orientirano" programiranje dobilo svoje ime?Objektno orientirano ni le naključna buzzword, ki jo slišite v programskih krogih. Za imenom je razlog - a kaj? Pridružite se mi, ko raziskujem nekatere osnove programskih konceptov in razložim ...

instagram viewer
Preberi več . Vse v PowerShellu je predmet, kar pomeni, da tudi spremenljivke imajo razširjene lastnosti in funkcije Powershell Cmdlets, ki bodo izboljšali vaše Windows Admin SkillsPowershell je orodje za ukazne vrstice in jezik skript za enake dele. Omogoča vam avtomatizacijo računalnika prek istih ukazov, ki jih uporabljate za njegovo upravljanje. Preberi več . Zaradi te lastnosti lahko iskanje nastavite na spremenljivko in na koncu dobite niz rezultatov.

$ yourVar = Get-ChildItem * foreach (datoteka $ v $ yourVar) {Vaš korak. }

V nekaterih jezikih bi bila obdelava tega niza večstopenjski postopek. Najprej določite dolžino in nato preštejete vsak korak.

V programu PowerShell stopite skozi matriko in izvedete dejanje na vsakem od njih z uporabo ForEach. Tako boste prihranili več vrstic kode, kar je koristno, če imate daljši skript. Sledi na primer majhen skript, ki bi uporabil nekaj zank Powershell ForEach. Ustvari ZIP arhiv vseh datotek, ki jih niste odprli v 30 dneh.

Gradnja sistema za arhiviranje datotek z uporabo zank ForEach

Prekinimo korake navzdol. Uporabljaš Get-ChildItem da dobite vse datoteke v mapi Dokumenti. Spremenljivka okolja Kaj so okoljske spremenljivke in kako jih lahko uporabljam? [Windows]Vsake toliko časa se bom naučil majhen nasvet, zaradi katerega bom pomislil, "če bi to vedel že pred enim letom, bi mi prihranil ure časa". Živo se spominjam, kako sem se naučil ... Preberi več $ env: USERPROFILE zažene skript s trenutnim profilom. Ta spremenljivka je bolj prenosljiva kot pot na trdi kodi. Rezultati tega iskanja so dodeljeni spremenljivki $ MyDocs. Nato ustvarimo našo zanko ForEach tako, da jo prestopimo skozi vsako $ Doc v $ MyDocs.

$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -ponovite. foreach ($ doc v $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Datum-datum) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = Nov element-Pot "$ ($ env: USERPROFILE) \ Dokumenti \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc v $ oldDocs) {Move-Item-Pot $ doc. FullName -Odreditev "$ ($ ArchiveFolder. Polno ime) \ $ ($ dok. Ime) "-Potrdite $ false. } $ source = $ ArchiveFolder. Polno ime. $ target = "$ ($ env: USERPROFILE) \ Dokumenti \ $ ($ ArchiveFolder. Ime) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory (vir $, $ destinacija) if (testna pot $ destinacija) {Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }

Znotraj zanke preverimo, ali je vsaka datoteka LastAccessTime lastnina je starejša od 30 dni. To dobimo s Pridobite datum cmdlet in z uporabo AddDays funkcija z negativnimi tridesetimi. Če je, dodamo datoteko v $ myOldDocs matrika. Po zaključku razvrščanja datotek vzamemo dokončano matriko in ustvarimo zip datoteko. Ta postopek je nekoliko bolj zapleten, saj vključuje priklic nekaj .NET. Ne skrbite, če je ne razumete - lahko ji ukradete kodo ta tehnični dokument TechNet.

Če želite razčleniti, kaj se tukaj dogaja: vse svoje stare datoteke bomo premaknili v nov imenik, imenovan za današnji datum, starejši od 30 dni. Ko se ta mapa zgradi, moramo ustvariti istoimenski arhiv ZIP. Preizkusili bomo, ali je arhiv uspel in .ZIP datoteka, in izbrisali novo mapo. To nastavite kot načrtovano nalogo, ki jo želite izvajati enkrat mesečno. Prihranili boste malo prostora in ohranili čistost mape Dokumenti.

Čeprav in storite medtem: zanke pod pogojem

Če želite zanko zagnati samo, če je določen pogoj izpolnjen, uporabite zanko "Čeprav". Če za sledenje štetju uporabljate spremenljivko, jo najprej nastavite.

i = 0. medtem ko (i <10) {vaši koraki i + = 1. }

Težava je v tem, da če ne uporabljate števca, boste morda želeli, da se koda zažene vsaj enkrat, tudi če je test pravi. Tako je tudi s spodnjim primerom skripte. Torej v teh primerih želite uporabiti zanko Do-while Kako delujejo zanke v računalniškem programiranjuZank je ena prvih vrst nadzora, ki se jo boste naučili pri programiranju. Verjetno veste o času in za zanke, toda kaj doseže zanka med delom? Preberi več . Skladnja je nekoliko drugačna.

naredite {Vaši koraki. } while (pogojna izjava)

Uporaba teh ni tako očitna za začetnika programerja. Vsakodnevno pisanje scenarijev morda ne boste naleteli na njih tako pogosto. Kadar so še posebej koristni, je izdelava improviziranega časovnika za preizkušanje uspešnosti postopka.

Izdelali bomo hitri skript za ponovno zagon oddaljene naprave in opozorili, če se ne prikaže nazaj v 15 minutah. Ta scenarij predvideva, da gre za domači strežnik ali drug stroj, ki se ne zažene zelo pogosto. Prilagodite čas, če se računalnik običajno hitreje prikaže.

Znova zaženite in preverite: z uporabo Do-while zanke

Ta skript je nekoliko preprostejši. Najprej uporabite Ponovno zaženite računalnik ukaz za ponovno zagon oddaljenega stroja. (Tu smo za ukaze za zagon zagotovo uporabili preskusni IP, ne pozabite to prepisati z DNS / IP vašega računalnika). Nato ustvarite spremenljivko števca, jaz in ga nastavite na 0. Nato imate Do-zanko, ko Start-Sleep skript ustavi za 300 sekund (pet minut). Drugi ukaz doda enega v števec.

Restart-Computer -ComputerName 127.0.0.1. i = 0. naredite {Start-Sleep -Seconds 300 $ i + = 1. } medtem ko ((! (test-povezava 127.0.0.1-tiho)) -or $ i -gt 3) če ($ i -gt 3) {Write-Ouput "Oddaljeni stroj se ne odziva, preverite." } else {Write-Output "Ponovni zagon uspešen" }

Potem imamo svoja kriterija Čeprav. Uporabljamo test Or, da zagotovimo, da napaka ustvari opozorilo. Druga možnost je, da se skripta neskončno čaka na oddaljeni stroj. Za preverjanje stroja uporabljamo Testna povezava cmdlet. Zaradi preprostosti je to Ping za PowerShell. Dodamo parameter -Tih kar ga prisili, da vrne True ali False in ne rezultate paketov. Drugi del izjave Or preveri, ali je števec več kot tri.

Ko se zanka dokonča, želimo ustvariti izhod. To pomeni, da moramo preveriti svoj števec. To je hitra izjava if / else. Če je večja od treh, se skript izkaže, da se oddaljeni stroj ne odziva. Če ni, se pokaže, da je bil ponovni zagon uspešen.

Druge zanke

V programu PowerShell sta na voljo še dve vrsti zank. So nekoliko povezane s prejšnjima dvema zankama, preprosto nista tako pogosto uporabljeni. A Za zanka deluje podobno kot primer while. V oceni nastavite vsa svoja merila in nato nastavite svoje cmdlete.

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

Do, dokler zanke niso kot zanke Do while, samo spremenite stavek Čeprav v Do. V primeru scenarija bi bilo enako kot vedenje. Je izbira sloga, vendar je Do while v drugih situacijah bolj vsestranski. Če se spomnite le enega, je Do Dok uporabnejši.

Predogledne zanke

PowerShell ima pomoč tudi za vsako od teh zank. Pomoč lahko dobite tako, da dodate približno pred imenom zanke v Get-Help. Nato lahko vidite primere in druge nasvete za vsako vrsto. Te bi morale biti v pomoč, če se zataknete.

Nadaljevanje rasti z vami

Na tej točki imate večino spretnosti, da začnete graditi robustne skripte. Ali avtomatizacija vaše domače ploščadi 15 Napredne naloge PowerShell Can Handle v sistemu Windows 10PowerShell je podoben ukazni poziv, vendar boljši. To je močno orodje za sistemsko administracijo. Sestavili smo 15 nalog, nekaj preprostih, nekaj zapletenih, ki koristijo čarobnost PowerShell-a. Preberi več ali prihranite čas v službi, zanke pomagajo vašim skriptom, da naredijo več. Kombiniranje teh zank z ravnanje z napakami vaše scenarije premakne izven osnov S temi nasveti ravnajte z napakami PowerShell-a kot šefPowerShell napaka ravnanja ima štiri dele. Naučite se, kako odpraviti napake in več v programu Microsoft PowerShell. Preberi več . To odpira vrata za bolj napredne jezike.

Kaj je pameten skript PowerShell, ki ste ga ustvarili z uporabo zank? Delite z nami v komentarjih.

Michael ni uporabljal Maca, ko so bili obsojeni, vendar ga lahko kodira v Applescript. Diplomiral je iz računalništva in angleščine; že nekaj časa piše o Macu, iOS-u in video igrah; in je že desetletje vsakdanji IT opica, specializiran za scenarije in virtualizacijo.