Циклы
Командлет ForEach-Object
Foreach-Object — командлет для обработки потоков данных.
Foreach-Object применяется для построчной обработки элементов по мере их поступления во входной поток:
ForEach-Object -InputObject (Get-Process) -Process { $_ }Get-Process | ForEach-Object { $_.Name }
Get-Process | % { $_.Name } # % — псевдоним ForEach-Object
Get-Process | foreach { $_.Name } # alias ключевого слова foreachОператоры break и continue не работают с ForEach-Object, т.к. это не цикл в привычном понимании, а обработка объекта конвейером.
Цикл Foreach
Цикл Foreach — это цикл для обработки коллекций.
Цикл foreach итерируется по коллекции:
foreach ($item in $array) {
# действия с $item
}Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.
Оператор break полностью прерывает цикл.
Для выхода из вложенных циклов можно использовать метку:
:outer foreach ($i in $array1) {
foreach ($j in $array2) {
if (<условие>) { break outer }
}
}Метод ForEach
Метод ForEach() в PowerShell — это метод коллекций (например, массивов, списков), который позволяет выполнить указанный скрипт или действие для каждого элемента коллекции. Он вызывается на объекте коллекции, принимает блок скрипта и последовательно применяет его к всем элементам, передавая текущий элемент в специальную переменную $PSItem (аналог $_ в конвейерах).
$collection.ForEach({
# Здесь $PSItem - текущий элемент коллекции
Write-Output $PSItem
})Этот метод удобен, когда надо выполнить действие для элементов коллекции без использования цикла foreach или командлета ForEach-Object.
Цикл For
Цикл For — классический итеративный цикл.
Синтаксис похож на языки C-подобного типа:
for (инициализация; условие; действие) {
# тело цикла
}Пример:
for ($i = 1; $i -le 10; $i++) {
Write-Host $i
}Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.
Оператор break полностью прерывает цикл.
Циклы While и Do-While
Цикл While — это цикл с предусловием. While сначала проверяет условие, потом выполняет тело:
while ($a -le 10) {
$a++
}Цикл Do-While — это цикл с постусловием. Do-While сначала выполняет тело, потом проверяет условие:
do {
$i++
} while ($i -le 10)Выполнение повторяется, пока условие истинно.
Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.
Оператор break полностью прерывает цикл.
Цикл Do-Until
Цикл Do-Until выполняет тело, а затем проверяет условие на ложь:
do {
$i++
} until ($i -le 10)Он повторяет тело, пока условие НЕ выполняется.
Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.
Оператор break полностью прерывает цикл.
Работа с циклами
С примерами использования можно ознакомиться по ссылке:
Last updated