Управление потоком

Завершено

Управление потоком означает, как ваш код выполняется в консоли или в сценарии. Он описывает последовательность кода, а также способ управления потоком. Существуют различные конструкции, помогающие управлять потоком. Код может выполнять все инструкции или только некоторые из них. Он также может повторять определенные инструкции, пока не будут выполнены определенные условия.

Рассмотрим эти конструкции управления потоком и как они функционируют:

  • Отбор входных данных. При использовании параметров в сценарии необходимо убедиться, что параметры имеют обоснованные значения, что является условием правильной работы сценария. Написание кода для управления этим процессом называется отбором входных данных.

  • Управление потоком выполнения. Предыдущая методика позволяет получить обоснованные и корректные входные данные. Этот подход в большей степени помогает определить, как следует выполнять код. Набор значений может определять, какая группа инструкций должна быть выполнена.

  • Итерация данных. Иногда данные принимают форму массива, который представляет собой структуру данных, содержащую множество элементов. Для таких данных может потребоваться изучить и обработать каждый из элементов. Для упрощения этого процесса можно использовать различные конструкции в PowerShell.

    Примечание.

    В данном модуле не рассматривается итерация по массивам. Существует множество конструкций для управления потоком в PowerShell. Все их перечислить невозможно, поэтому мы рассмотрим наиболее важные из них, которые вы, вероятно, встретите в сценариях.

Управление входными данными и потоком выполнения с помощью If, ElseIf и Else

Конструкцию If можно использовать для определения выражения True или False. В зависимости от этого определения можно выполнить инструкцию, заданную конструкцией If. Синтаксис If выглядит следующим образом:

If (<expression that evaluates to True or False>) 
{
  # Statement that runs only if the preceding expression is $True.
}

Операторы

В PowerShell доступно два встроенных параметра для определения выражения True или False:

  • $True указывает, что выражение — True.
  • $False указывает, что выражение — False.

Вы можете использовать операторы для определения выражения True или False. Существует несколько операторов. Основная идея обычно состоит в том, чтобы определить, совпадает ли значение слева от оператора со значением справа от оператора, учитывая условие оператора. Оператор может выражать такие условия, как определение равенства, неравенства или соответствия регулярному выражению.

Ниже приведен пример использования оператора. Оператор -le определяет, действительно ли значение слева от оператора меньше или равно значению справа от оператора:

$Value = 3
If ($Value -le 0) 
{
  Write-Host "Is negative"
}

Этот код не выводит никаких результатов, так как выражение принимает значение False. Значение 3 является явно положительным.

Else

Конструкция If выполняет инструкции только в том случае, если они имеют значение True. Что нужно сделать, чтобы учесть случаи со значением False? Используйте конструкцию Else. If означает "Если этот вариант имеет значение true, выполните следующую инструкцию". Else не принимает выражения. Этот инструмент фиксирует все случаи, когда предложение If принимает значение False. При объединении If и Else код выполняет инструкции в одной из двух конструкций. Давайте добавим в предыдущий код конструкцию Else:

$Value = 3
If ($Value -le 0) 
{
  Write-Host "Is negative"
} Else {
  Write-Host "Is Positive"
}

Добавив Else рядом с фигурной закрывающей скобкой If, мы создали объединенную конструкцию. При выполнении этого кода в консоли отобразится Is Positive. Это обусловлено тем, что If принимает значение False, а Else – значение True. Поэтому Else выводит свою инструкцию.

Примечание.

Else можно использовать только в том случае, если непосредственно перед этим кодом задана конструкция If.

ElseIf

If и Else прекрасно обрабатывает все пути, которые может принимать код. Еще одной полезной конструкцией является ElseIf. Код ElseIf предназначен для использования с If. Он говорит: "Выражение в этой конструкции будет оцениваться, если предыдущая инструкция If имеет значение False". Как и If, ElseIf может принимать выражение, поэтому оно помогает представить ElseIf как дополнительный оператор If.

Вот пример с использованием ElseIf:

# _FullyTax.ps1_
# Possible values: 'Minor', 'Adult', 'Senior Citizen'
$Status = 'Minor'
If ($Status -eq 'Minor') 
{
  Write-Host $False
} ElseIf ($Status -eq 'Adult') {
  Write-Host $True
} Else {
  Write-Host $False
}

Этот код можно оформить более компактно, но так он демонстрирует использование ElseIf. Он предписывает, что сначала должен быть оценен If, затем ElseIf и Else.

Примечание.

Как и в случае с Else, нельзя использовать ElseIf, если ранее не задан If.