Како Поверсхелл Фореацх, Вхиле и друге петље функционишу

Како Поверсхелл Фореацх, Вхиле и друге петље функционишу

Кључни први корак у учењу програмирања је рад са петљама. Срећом, ПоверСхелл наставља да расте са вашим вештинама.





како послати поруку некоме на иоутубе 2019

Постојеће команде које свакодневно користите можете уоквирити унутар петљи како бисте уштедели време и труд. Ваше скрипте чине тежак посао док радите важан посао читајући више чланака о МакеУсеОф!





Поверсхелл ФорЕацх петље: врата напредном руковању подацима

ФорЕацх је псеудоним за ФорЕацх-Објецт. (Алиас је само пречица за команду у ПоверСхелл -у.) Ово је добро време за разговор о начину на који ПоверСхелл обрађује податке.





Као и већина савремених програмских језика, ПоверСхелл је објектно оријентисан. Све у ПоверСхелл -у је објекат, што значи да чак и променљиве имају проширена својства и функције . То својство је разлог зашто можете поставити претраге на променљиву и на крају добити низ резултата.

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

У неким језицима обрада овог низа била би вишеступањски процес. Прво добијање дужине, а затим пребројавање сваког корака.



У ПоверСхелл -у корачате кроз низ и извршавате радње на сваком од њих користећи ФорЕацх. Ово вам штеди неколико редова кода, што је корисно ако имате дужу скрипту. На пример, у наставку је мала скрипта која би користила неколико Поверсхелл ФорЕацх петљи. Он ствара ЗИП архиву свих ваших датотека које нисте отворили 30 дана.

Изградња система за архивирање датотека помоћу ФорЕацх петљи

Хајде да сломимо кораке. Користите Гет-ЦхилдИтем да бисте добили све датотеке у фасцикли Документи. Променљива окружења $ енв: УСЕРПРОФИЛЕ покреће скрипту користећи тренутни профил. Ова променљива је преносивија од хардкодиране путање. Резултати тог претраживања додељују се променљивој $ МиДоцс . Затим креирамо нашу ФорЕацх петљу тако што ћемо проћи кроз сваку $ Доц у $ МиДоцс .





$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
}

Унутар петље проверавамо да ли је свака датотека ЛастАццессТиме некретнина је старија од 30 дана. Ово добијамо са Гет-Дате цмдлет и помоћу АддДаис функција са минус 30. Ако јесте, додаћемо датотеку у $ миОлдДоцс арраи. Након што се сортирање датотека доврши, узимамо комплетни низ и креирамо зип датотеку. Овај процес је мало компликованији јер укључује позивање на део .НЕТ -а. Не брините ако га не разумете сасвим - код можете украсти овај документ помоћи за ТецхНет .

Да рашчланимо шта се овде дешава: Све наше старе датотеке ћемо преместити у нови директоријум назван данашњи датум на више од 30 дана. Када се та фасцикла изгради, морамо креирати ЗИП архиву истог имена. Тестираћемо да ли је архива успела и да ли је .ЗИП датотека ту, а затим избрисати нову фасциклу. Подесите ово као планирани задатак који ће се изводити једном месечно. Уштедећете мало простора и сачуваћете фасциклу Документи чистом.





Вхиле и До Вхиле: Петље под условом

Ако желите да покренете петљу само када је испуњен одређени услов, користите петљу Вхиле. Ако користите променљиву за праћење одбројавања, прво је поставите.

i=0
while(i<10){
Your Steps
i+=1
}

Проблем је у томе што ако не користите бројач, можда бисте желели да се ваш код покрене барем једном, чак и ако је тест тачан. Ово је случај са доњим примером скрипте. Дакле, у тим случајевима желите да користите До-Вхиле петљу. Синтакса је мало другачија.

do{
Your Steps
}while(Conditional Statement)

Употреба ових програма није сасвим очигледна програмерима почетницима. Радећи типичне свакодневне скрипте, можда нећете тако често наилазити на њих. Оно што им посебно помаже је да направе импровизовани тајмер за тестирање успешности процеса.

како трајно избрисати хотмаил налог

Направићемо брзу скрипту за поновно покретање удаљене машине и упозорити је ако се не врати у року од 15 минута. Овај сценарио претпоставља да се ради о кућном серверу или другој машини која се не покреће често. Слободно прилагодите време ако се рачунар обично брже појављује.

Поново покрените и проверите: Коришћење До-Вхиле петље

Ова скрипта је мало једноставнија. Прво, користите Поново покрените рачунар команда за поновно покретање удаљене машине. (Овде смо користили лажни ИП за команде за поновно покретање, обавезно препишите ово ДНС/ИП рачунаром). Затим креирајте променљиву бројач, и и поставите га на 0. Затим имате До петљу са Старт-Слееп-ом који зауставља скрипту на 300 секунди (пет минута). Друга команда додаје једну у бројач.

Restart-Computer -ComputerName 127.0.0.1
i=0
do{
Start-Sleep -Seconds 300
$i += 1
}while((!(Test-Connection 127.0.0.1 -Quiet)) -or $i -gt 3)
if($i -gt 3){
Write-Ouput 'Remote Machine not responding, please check.'
}
else{
Write-Output 'Reboot Succeeded'
}

Затим имамо критеријуме Вхиле. Користимо Ор тест да бисмо осигурали да квар генерише упозорење. Алтернатива је скрипта која бесконачно чека на удаљену машину. За проверу машине користимо Тест-Цоннецтион цмдлет. Ради једноставности, ово је Пинг за ПоверСхелл. Додамо параметар -Тишина што га приморава да врати Тачно или Нетачно уместо резултата пакета. Други део наредбе Ор проверава да ли је бројач већи од три.

Када се петља заврши, желимо да направимо излаз. То значи да морамо да проверимо наш бројач. Ово је брза иф/елсе изјава. Ако је веће од три, скрипта излази да удаљена машина не реагује. Ако није, то значи да је поновно покретање успјешно.

Отхер Лоопс

У ПоверСхелл -у су доступне још две врсте петљи. Донекле су повезане са претходне две петље, само се не користе тако често. Фор петља ради слично примеру Вхиле. У евалуацији сте поставили све своје критеријуме, а затим подесили цмдлете.

for($i = 0;$i -lt 10;$i++){
Your Steps
}

Петље До До су попут петљи До Док, само промените наредбу Вхиле у До. У примеру скрипте, то би било исто што се тиче понашања. То је избор стила, али До До је свестранији у другим ситуацијама. Дакле, ако се сетите само једног, До Вхиле је корисније.

ПоверСхелл има помоћ и за сваку од ових петљи. Помоћ можете добити додавањем О томе пре имена петље у Гет-Хелп. Затим можете видети примере и друге савете за сваку врсту. Ово би требало да вам помогне ако заглавите.

Настављајући да расте са вама

У овом тренутку имате већину вештина за почетак изградње робусних скрипти. Било да аутоматизујете кућну опрему или штедите време на послу, петље помажу вашим скриптама да учине више. Комбиновањем ових петљи са руковањем грешкама ваше скриптовање се помера даље од основа. Ово отвара врата напреднијим језицима.

Шта је паметна ПоверСхелл скрипта коју сте креирали помоћу петљи? Поделите то са нама у коментарима.

Објави Објави Твеет Емаил Избришите ове Виндовс датотеке и фасцикле да бисте ослободили простор на диску

Треба да очистите простор на диску на рачунару са оперативним системом Виндовс? Ево Виндовс датотека и фасцикли које се могу безбедно избрисати како би се ослободио простор на диску.

Прочитајте следеће
Повезане теме
  • Програмирање
  • ПоверСхелл
  • Скриптирање
О аутору Мицхаел МцЦоннелл(44 објављена чланка)

Мицхаел није користио Мац када су били осуђени на пропаст, али може да кодира у Апплесцрипт -у. Дипломирао је рачунарство и енглески језик; већ неко време пише о Мац -у, иОС -у и видео играма; и он је дневни мајмун ИТ више од једне деценије, специјализован за скриптовање и виртуелизацију.

апликације за претварање текста у говор за андроид
Више од Мицхаела МцЦоннелла

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили