Циклы

Командлет 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 полностью прерывает цикл.

Для выхода из вложенных циклов можно использовать метку:

Метод ForEach

Метод ForEach() в PowerShell — это метод коллекций (например, массивов, списков), который позволяет выполнить указанный скрипт или действие для каждого элемента коллекции. Он вызывается на объекте коллекции, принимает блок скрипта и последовательно применяет его к всем элементам, передавая текущий элемент в специальную переменную $PSItem (аналог $_ в конвейерах).

Этот метод удобен, когда надо выполнить действие для элементов коллекции без использования цикла foreach или командлета ForEach-Object.

Цикл For

Цикл For — классический итеративный цикл.

Синтаксис похож на языки C-подобного типа:

Пример:

Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.

Оператор break полностью прерывает цикл.

Циклы While и Do-While

Цикл While — это цикл с предусловием. While сначала проверяет условие, потом выполняет тело:

Цикл Do-While — это цикл с постусловием. Do-While сначала выполняет тело, потом проверяет условие:

Выполнение повторяется, пока условие истинно.

Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.

Оператор break полностью прерывает цикл.

Цикл Do-Until

Цикл Do-Until выполняет тело, а затем проверяет условие на ложь:

Он повторяет тело, пока условие НЕ выполняется.

Оператор continue пропускает оставшуюся часть текущей итерации и переходит к следующей.

Оператор break полностью прерывает цикл.

Работа с циклами

С примерами использования можно ознакомиться по ссылке:

Last updated