Как использовать операторы If в PowerShell для добавления условной логики в ваши сценарии

PowerShell – это мощный язык сценариев по многим причинам. Одной из таких причин является его поддержка условной логики, которая может помочь вам усилить ваши сценарии PowerShell, сделав их еще более эффективными и эффективными. В этой статье я собираюсь научить вас, как использовать If, Else и Elseif условную логику и объяснить, как это может помочь вам как автору сценариев PowerShell.

Как использовать оператор If в PowerShell

Операторы If в PowerShell используются для выполнения условного выполнения кода. Они позволяют вам проверить условие и выполнить различные блоки кода в зависимости от того, оценивается ли условие как true или false.

Давайте начнем с двух примеров, показывающих, как использовать операторы PowerShell If.

Пример 1: Проверка, является ли число положительным или отрицательным

В следующем примере у нас есть переменная $number, установленная на 10. Оператор If проверяет, является ли значение $number больше 0, используя оператор -gt.

  • Когда условие истинно, он выполняет блок кода внутри первого набора фигурных скобок, который в данном случае выводит “Число положительное”.
  • Когда условие ложно, он переходит к блоку Elseif и проверяет, является ли число меньше 0, используя оператор -lt.
  • Если условие истинно, оно выполняет код внутри второй параллельной скобки, печатая “Целое число отрицательно.”
  • Если оба условия ложны, оно выполняет код внутри блока else, печатая “Целое число нулевое.”
$number = 10

if ($number -gt 0) {
    Write-Host “The number is positive.”
} elseif ($number -lt 0) {
    Write-Host “The number is negative.”
} else {
    Write-Host “The number is zero.”
}
Checking if a number is positive or negative (Image credit: Petri/Bill Kindle)

Пример 2: проверка существования файла

В следующем примере у нас есть переменная $file, установленная в путь к файлу. Утверждение If использует cmdlet Test-Path, чтобы проверить существование файла.

  • Если условие оценивается как истинное,意味着 файл существует, оно выполняет код внутри первой параллельной скобки, печатая “Файл существует.”
  • Если условие ложно, оно выполняет код внутри блока else, печатая “Файл не существует.”
$file = “C:\path\to\file.txt”

if (Test-Path $file) {
    Write-Host “The file exists.”
} else {
    Write-Host “The file does not exist.”
}
Checking if a file exists (Image credit: Petri/Bill Kindle)

Эти были только два базовых примера, показывающие, как работают условные операторы в PowerShell. Следуем к else заявлению.

Как использовать Else утверждение с If утверждением в PowerShell

В PowerShell вы можете использовать оператор Else вместе с оператором If для создания условной логики. Это позволяет указать блок кода, который будет выполнен, когда условие в операторе If ложно.

Давайте рассмотрим два примера, показывающих, как использовать операторы Else в PowerShell.

Пример 3: Проверка, больше ли переменная числа

В этом примере мы делаем несколько проверок:

  • Оператор If проверяет, больше ли переменная $number 10.
  • Если да, отображается сообщение “Число больше 10”.
  • Если условие не выполняется, выполняется блок Else, и отображается сообщение “Число не больше 10”.
$number = 5

if ($number -gt 10) {
    Write-Host “The number is greater than 10.”
}
else {
    Write-Host “The number is not greater than 10.”
}
Checking if a variable is greater than a number (Image credit: Petri/Bill Kindle)

Пример 4: Сравнение значения переменной со строкой

В этом примере оператор If сравнивает значение переменной $user со строкой “John”.

  • Если они равны, отображается сообщение “Добро пожаловать, John!”
  • Если условие не выполняется, то есть значение $user не “John”, выполняется блок Else, и отображается сообщение “Доступ запрещен. Вы не John.”
$user = “John”

if ($user -eq “John”) {
    Write-Host “Welcome, John!”
}
else {
    Write-Host “Access denied. You are not John.”
}
Comparing the value of a variable with a string (Image credit: Petri/Bill Kindle)

Разница между операторами If и Else заключается в условиях, которые они проверяют, и последующих действиях, которые они выполняют.

  • Оператор If проверяет условие и выполняет код, если условие истинно.
  • Оператор Else предоставляет альтернативный блок кода, который выполняется, когда условие в операторе If ложно. Если условие в операторе If истинно, блок Else не выполняется.

Подводя итог, оператор If позволяет выполнять код на основе определенного условия. Оператор Else предоставляет запасной вариант, когда условие ложно. Используя эти операторы вместе, вы можете создавать более гибкую и надежную логику в своих скриптах PowerShell.

Как использовать операторы ElseIf в PowerShell

Операторы ElseIf используются для создания условия, которое проверяет, если предыдущий оператор If или любые предыдущие операторы ElseIf возвращают значение «ложно». Операторы ElseIf позволяют проверять несколько условий и выполнять разные блоки кода в зависимости от результатов этих условий. Оператор ElseIf особенно полезен, когда у вас есть более двух возможных исходов.

Вот два примера, которые демонстрируют использование операторов ElseIf в PowerShell.

Пример 5: Проверка диапазона числа

В этом примере код проверяет значение переменной $number и выполняет различные блоки кода в зависимости от его диапазона.

  • Если число меньше 10, то первое условие истинно, и отображается соответствующее сообщение.
  • Если это не так, мы проверяем следующее условие с использованием оператора ElseIf. Когда число находится между 10 и 19 (включительно), второе условие истинно, и отображается соответствующее сообщение.
  • Если ни одно из предыдущих условий не верно, выполняется блок Else, отображающий сообщение о том, что число равно или больше 20.
$number = 25

if ($number -lt 10) {
    Write-Host “The number is less than 10.”
}
elseif ($number -ge 10 -and $number -lt 20) {
    Write-Host “The number is between 10 and 19.”
}
else {
    Write-Host “The number is 20 or greater.”
}
Checking a number’s range (Image credit: Petri/Bill Kindle)

Пример 6: Проверка длины строки

В этом примере код проверяет длину строки $name и определяет ее категорию на основе ее длины.

  • Когда имя содержит более 10 символов, первое условие истинно, и отображается соответствующее сообщение.
  • Когда первое условие ложно, мы проверяем следующее условие с использованием оператора ElseIf. Если имя содержит более 5 символов (но не более 10), второе условие истинно, и отображается соответствующее сообщение.
  • Если ни одно из предыдущих условий не верно, выполняется блок Else, отображающий сообщение о том, что имя содержит 5 символов или меньше.
$name = “John”

if ($name.Length -gt 10) {
    Write-Host “The name is longer than 10 characters.”
}
elseif ($name.Length -gt 5) {
    Write-Host “The name is between 6 and 10 characters.”
}
else {
    Write-Host “The name is 5 characters or shorter.”
}
Checking a string’s length (Image credit: Petri/Bill Kindle)

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

Как использовать операторы AND/OR в PowerShell с If утверждениями

В PowerShell “AND” (AND) и “OR” (ИЛИ) являются логическими операторами, которые используются для комбинации нескольких условий в утверждающих условиях, чтобы контролировать흐름 скрипта. Они могут использоваться с If утверждениями для оценки нескольких условий одновременно:

Дам вам два примера, чтобы показать их использование и выделить различия с IfElse утверждениями.

Пример 7: Использование оператора AND

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

В этом примере скрипт проверяет, являются ли оба переменные $isAdministrator и $isAccountActive true. Если оба условия true, скрипт выведет сообщение, показывающее, что пользователь является администратором с активной учетной записью. В противном случае, он выведет сообщение, показывающее, что либо пользователь не является администратором, либо их учетная запись неактивна.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator -and $isAccountActive) {
    Write-Host “$user is an administrator with an active account.”
} else {
    Write-Host “$user is not an administrator, or their account is inactive.”
}
Checking if a user is an administrator and if their account is currently active (Image credit: Petri/Bill Kindle)

Пример 8: Использование оператора “OR”

Предположим, вы хотите проверить, работает ли сервер под управлением Windows Server 2016 или Windows Server 2019. С помощью PowerShell можно использовать оператор OR для оценки этих условий.

В этом примере скрипт использует оператор OR для проверки, является ли переменная $osVersion равной либо “Windows Server 2016”, либо “Windows Server 2019”. Если условие оценивается как истинное, отображается сообщение, указывающее, что сервер работает поддерживаемой операционной системой. В противном случае, отображается сообщение, указывающее, что сервер работает с неподдерживаемой операционной системой.

$server = “Server01”
$osVersion = “Windows Server 2012”

if ($osVersion -eq “Windows Server 2016” -or $osVersion -eq “Windows Server 2019”) {
    Write-Host “$server is running a supported operating system.”
} else {
    Write-Host “$server is running an unsupported operating system.”
}
Checking if our variable is equal to either Windows Server 2016 or Windows Server 2019 (Image credit: Petri/Bill Kindle)

Пример 9: Сравнение с помощью операторов IfElse

Операторы AND и OR обеспечивают короткий способ оценить несколько условий одновременно. Они отличаются от операторов IfElse, в которых выполняется только одно условие за раз. Если условие в операторе IfElse истинно, выполняется блок кода, связанный с оператором If. В противном случае, выполняется блок кода, связанный с оператором Else.

Чтобы это показать, давайте измените Пример 1, используя оператор IfElse. В этом измененном примере сценарий сначала проверяет, является ли пользователь администратором. Если это так, он затем проверяет, активен ли аккаунт. В зависимости от оценки каждого условия выполняются различные блоки кода.

$user = “John”
$isAdministrator = $true
$isAccountActive = $false

if ($isAdministrator) {
    if ($isAccountActive) {
        Write-Host “$user is an administrator with an active account.”
    } else {
        Write-Host “$user is an administrator, but their account is inactive.”
    }
} else {
    Write-Host “$user is not an administrator.”
}
Comparison with IfElse statements (Image credit: Petri/Bill Kindle)

Использование такого подхода позволяет более детально контролировать ход выполнения сценария. Однако это может привести к вложенным блокам кода и увеличенной сложности по сравнению с использованием логических операторов, таких как “И” и “ИЛИ”.

Как использовать строки здесь в условных операторах PowerShell

В PowerShell строки здесь используются для создания многострочных строковых литералов. Они полезны при работе с большими блоками текста или когда нужно сохранить форматирование.

Строки здесь, используемые внутри условных операторов If, могут сравнивать строковое значение с многострочной строкой. Вот синтаксис использования строк здесь в условных операторах PowerShell:If

if ($string -eq @’
    Multi-line
    string
    ‘@)
{
    # Code to execute if the condition is true
}
else
{
    # Code to execute if the condition is false
}

Позвольте мне привести два примера, чтобы вам лучше понять, как использовать строки здесь в условных операторах If.

Пример 10: Проверка наличия определенного сообщения

Предположим, у нас есть сценарий PowerShell, который запрашивает ввод пользователя, и мы хотим проверить, ввел ли пользователь определенное сообщение, например “Привет, мир!”. Мы можем использовать многострочную строку внутри оператора if, чтобы сравнить ввод пользователя с ожидаемым сообщением.

В следующем примере сценарий запрашивает у пользователя ввод сообщения, и мы сохраняем ввод в переменной $userInput. Затем оператор if сравнивает ввод пользователя с ожидаемым сообщением с использованием многострочной строки. Если ввод совпадает с ожидаемым сообщением, отображается сообщение “Пользователь ввел правильное сообщение”; в противном случае отображается “Пользователь ввел другое сообщение”.

$userInput = Read-Host “Enter a message”

if ($userInput -eq @’
Hello, world!
‘@)
{
    Write-Host “User entered the correct message.”
}
else
{
    Write-Host “User entered a different message.”
}
Using here-strings to check for a specific message (Image credit: Petri/Bill Kindle)

Пример 11: Сравнение блока сценария

Вот еще один пример, когда мы хотим сравнить блок сценария с предопределенным блоком кода. Мы можем использовать многострочные строки для определения блока сценария, а затем сравнить их в операторе If.

В этом примере у нас есть два блока сценария, $predefinedCode и $userCode. Мы хотим проверить, совпадает ли пользовательский код с предопределенным кодом. Используя многострочные строки для определения блоков сценария, мы можем сравнить их в операторе If.

Если пользовательский код совпадает с предопределенным кодом, отображается сообщение “Пользовательский код совпадает с предопределенным кодом”; в противном случае отображается “Пользовательский код отличается от предопределенного кода”.

$predefinedCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

$userCode = {
    Write-Host “This is some code.”
    Write-Host “It does something.”
}

if ($userCode -eq $predefinedCode)
{
    Write-Host “The user code matches the predefined code.”
}
else
{
    Write-Host “The user code differs from the predefined code.”
}
Using here-strings to compare a script block (Image credit: Petri/Bill Kindle)

Как использовать конкатенацию в операторах If

В PowerShell можно соединять строки с использованием арифметического оператора ‘+’. Чтобы использовать соединение в If утверждениях, создается новый строковый идентификатор путём объединения нескольких строковых переменных или констант.

Вот два примера, иллюстрирующих использование соединения в утверждениях PowerShell:If

Пример 12: Соединение строковых переменных

В этом примере определены две строковые переменные: $firstName и $lastName. If утверждение проверяет, содержит ли каждая переменная значение (то есть, они не являются пустыми строками).

  • Если оба условия истинны, мы соединяем имя и фамилию с помощью оператора + и сохраняем результат в переменной $fullName. Затем мы выводим объединённое полное имя с помощью командлета Write-Host.
  • Если отсутствует либо имя, либо фамилия, мы увидим, что выполняется блок else и отображается соответствующее сообщение.
$firstName = “John”
$lastName = “Doe”

if ($firstName -ne ” -and $lastName -ne ”) {
    $fullName = $firstName + “ “ + $lastName
    Write-Host “Full Name: $fullName”
} else {
    Write-Host “First name or last name is missing.”
}
Concatenating string variables (Image credit: Petri/Bill Kindle)

Пример 13: Конкатенация строковых литералов

В этом втором примере определены три переменные: $greeting со значением “Привет”, $name со значением “Алиса” и $age со значением 30. Условный оператор if проверяет, имеет ли переменная $name значение, используя метод IsNullorEmpty().

  • Если условие истинно, мы создаем сообщение, которое объединяет приветствие, имя и возраст с помощью оператора +. Мы сохраняем полученное сообщение в переменной $message, а затем отображаем его с помощью командлета Write-Host.
  • Если имя отсутствует (пустая строка), выполняется блок else, и отображается соответствующее сообщение об ошибке.
$greeting = “Hello”
$name = “Alice”
$age = 30

if ([string]::IsNullorEmpty($name) -eq $false){
    $message = $greeting + “, “ + $name + “! Your age is “ + $age + “.”
    Write-Host $message
} else {
    Write-Host “Name is missing.”
}
Concatenating string literals (Image credit: Petri/Bill Kindle)

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

Как использовать строки подключения в операторах If

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

В условиях If можно использовать строки подключения, чтобы выполнять определённые блоки кода в зависимости от успешности или неудачи подключения. Вот два примера, показывающих использование строк подключения в условных операторах PowerShell If:

Пример 14: проверка подключения к базе данных

В этом примере мы определяем строку подключения ($connectionString), указывающую имя сервера, имя базы данных и учетные данные. Затем мы создаем объект SqlConnection с использованием строки подключения. Внутри блока try мы пытаемся открыть подключение с помощью $connection.Open().

  • Если подключение успешно, блок кода под блоком try выполняется, показывая успешное подключение.
  • Если происходит исключение (т.е. подключение не удается), блок кода под блоком catch выполняется, показывая неудачное подключение.
# Define the connection string
$connectionString = “Server=server_name;Database=db_name;User Id=user_id;Password=password;"

# Create a SqlConnection object using the connection string
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)

# Attempt to establish the connection
try {
    $connection.Open()
   
    # Connection successful
    Write-Host “Connected to the database.”

    # Perform additional operations on the database if needed

    # Close the connection
    $connection.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the database.”
}
Checking a database connection (Image credit: Petri/Bill Kindle)

Пример 15: проверка подключения к сети

В втором примере мы определяем строку подключения ($connectionString), указывающую имя сервера и номер порта. Затем мы создаем объект TcpClient с использованием строки подключения. Внутри блока try мы пытаемся установить соединение с сервером с помощью $tcpClient.Connect(“server_name”, 1234).

  • Если подключение успешно, блок кода под блоком try выполняется, показывая успешное подключение.
  • Если происходит исключение (т.е., соединение провалено), блок кода будет выполнен в catch-блоке, показывая неудачное соединение.
# Define the connection string
$connectionString = “Server=server_name;Port=1234;"

# Create a TcpClient object using the connection string
$tcpClient = New-Object System.Net.Sockets.TcpClient

# Attempt to establish the connection
try {
    $tcpClient.Connect(”server_name”, 1234)
   
    # Connection successful
    Write-Host “Connected to the server.”

    # Perform additional operations if needed

    # Close the connection
    $tcpClient.Close()
}
catch {
    # Connection failed
    Write-Host “Failed to connect to the server.”
}
Checking a network connection (Image credit: Petri/Bill Kindle)

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

Как использовать операторы Break и Continue внутри оператора If

В PowerShell операторы Break и Continue используются для управления выполнением внутри циклов и case-условных операторов. While Break позволяет выйти из цикла или case-условного оператора, Continue позволяет пропустить текущий цикл и перейти к следующему.

хотя эти операторы обычно используются в циклах, вы можете также использовать их внутри оператора If, чтобы достичь специфического поведения. Посмотрим, как использовать Break и Continue в операторах If с двумя простыми примерами.

Пример 16: Использование Break в операторе If

В этом примере у нас есть массив чисел от 1 до 10. Мы используем цикл Foreach для перебора каждого числа. Внутри цикла мы проверяем, равно ли текущее число 6.

  • Если да, мы отображаем сообщение, а затем используем оператор break для выхода из цикла.
  • Если число не равно 6, мы просто отображаем текущее число.
  • Когда цикл встречает число 6, он выходит из цикла, и программа продолжает выполнение последующего кода.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 6) {
        Write-Host “Found the number 6. Exiting the loop.”
        break
    }
   
    Write-Host “Current number is: $number”
}
Using Break in an If statement (Image credit: Petri/Bill Kindle)

Пример 17: Использование Continue в операторе If

В этом примере у нас также есть массив чисел от 1 до 10. Мы используем цикл Foreach для перебора каждого числа. Сначала мы проверяем, является ли текущее число 3 или 7.

  • Если это так, мы отображаем сообщение, а затем используем оператор Continue для пропуска текущей итерации и перехода к следующей.
  • Если число не является 3 или 7, мы отображаем текущее число. Цикл будет продолжаться, пока мы не оценим все числа.
$numbers = 1..10

foreach ($number in $numbers) {
    if ($number -eq 3 -or $number -eq 7) {
        Write-Host “Skipping the number $number”
        continue
    }
   
    Write-Host “Current number is: $number”
}
Using Continue in an If statement (Image credit: Petri/Bill Kindle)

В обоих примерах мы использовали операторы If для условного выполнения определенных действий на основе определенных условий. Оператор Break позволил нам выйти из цикла или переключиться полностью, а оператор Continue пропустил оставшийся код в текущей итерации и перешел к следующей итерации.

Как использовать хэш-таблицы в условиях If

В PowerShell можно использовать хэш-таблицы в If условиях для выполнения проверки условий на основе пар ключ-значение. Хэш-таблицы это собрание пар ключ-значение, где каждый ключ уникален.

Вот два примера, показывающих, как использовать хэш-таблицы в PowerShell If условиях.

Пример 18: проверка наличия определенного ключа в хэш-таблице

В этом примере у нас есть хэш-таблица с именем $myHashtable и тремя парami ключ-значение. If условие проверяет,是否存在 ключ “Age” в хэш-таблице с помощью метода ContainsKey(). Если ключ существует, она печатает сообщение, утверждающее, что есть age; в противном случае, она печатает сообщение, утверждающее, что age отсутствует.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific key exists in the hashtable
if ($myHashtable.ContainsKey(”Age”)) {
    Write-Host “Age is present in the hashtable.”
}
else {
    Write-Host “Age is not present in the hashtable.”
}
Checking if a specific key exists in a hashtable (Image credit: Petri/Bill Kindle)

Пример 19: проверка наличия определенного значения в хэш-таблице

В этом примере у нас снова есть та же самая хэш-таблица с именем $myHashtable. If условие проверяет,是否存在 значение “New York” в хэш-таблице с помощью метода ContainsValue(). Если значение существует, она печатает сообщение, утверждающее, что город – это New York; в противном случае, она печатает сообщение, утверждающее, что город не New York.

# Create a hashtable
$myHashtable = @{
    “Name” = “John”
    “Age” = 30
    “City” = “New York”
}

# Check if a specific value exists in the hashtable
if ($myHashtable.ContainsValue(”New York”)) {
    Write-Host “The city is New York.”
}
else {
    Write-Host “The city is not New York.”
}
Checking if a specific value exists in a hashtable (Image credit: Petri/Bill Kindle)

Как использовать массивы в If условиях

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

Пример 20: Проверка, содержит ли массив определенное значение

В этом примере у нас есть массив с именем $numbers, содержащий последовательность чисел. Оператор If проверяет, содержит ли массив значение “3”, используя оператор -contains. Если условие верно, он выведет “Массив содержит значение 3”. В противном случае он выведет “Массив не содержит значение 3”.

# Define an array of numbers
$numbers = 1, 2, 3, 4, 5

# Check if the array contains a specific value, e.g., 3
if ($numbers -contains 3) {
    Write-Host “The array contains the value 3.”
} else {
    Write-Host “The array does not contain the value 3.”
}
Checking if an array contains a specific value (Image credit: Petri/Bill Kindle)

Пример 21: Проверка, пуст ли массив

В этом примере у нас есть пустой массив с именем $emptyArray. Оператор If проверяет, равна ли длина массива 0. Если условие верно, он выведет “Массив пуст”. В противном случае он выведет “Массив не пуст”.

# Define an empty array
$emptyArray = @()

# Check if the array is empty
if ($emptyArray.Length -eq 0) {
    Write-Host “The array is empty.”
} else {
    Write-Host “The array is not empty.”
}
Checking if an array is empty (Image credit: Petri/Bill Kindle)

Как использовать операторы Switch в PowerShell

В PowerShell Switch запрос позволяет выполнять условный разветвление на основе значения переменной или выражения. Он позволяет сравнить одно значение с несколькими другими значениями и выполнять различные блоки кода в зависимости от соответствия.

Вот объяснение, как использовать Switch запросы в PowerShell с двумя простыми примерами.

Пример 22: Проверка дней недели

В этом примере у нас есть переменная $day, которая будет содержать текущий день. Switch запрос проверяет значение $day на соответствие различным случаям, используя строки “Monday”, “Tuesday” и так далее.

  • Если есть соответствие, скрипт выполняет соответствующий блок кода.
  • Если нет соответствия, скрипт выполняет блок Default. В этом случае выходной результат будет “It’s the start of the week!”.
$day = (Get-Date).DayOfWeek

switch ($day) {
    “Monday” {
        Write-Host “It’s the start of the week!”
    }
    “Tuesday” {
        Write-Host “It’s Tuesday!”
    }
    “Wednesday” {
        Write-Host “It’s the middle of the week!”
    }
    “Thursday” {
        Write-Host “It’s almost Friday!”
    }
    “Friday” {
        Write-Host “It’s finally Friday!”
    }
    Default {
        Write-Host “It’s the weekend!”
    }
}
Using a Switch statement to check for days of the week (Image credit: Petri/Bill Kindle)

Пример 23: Категоризация чисел

Второй пример – у нас есть переменная $number с значением 42. Switch запрос проверяет значение $number на соответствие различным случаям, используя блоки скрипта. Первый случай проверяет, является ли число меньше 0, второй – больше 0, а блок Default выполняется, если никакие другие случаи не соответствуют. В этом примере выходной результат будет “Positive number”.

$number = 42

switch ($number) {
    { $_ -lt 0 } {
        Write-Host “Negative number”
    }
    { $_ -gt 0 } {
        Write-Host “Positive number”
    }
    Default {
        Write-Host “Zero”
    }
}
Using a Switch statement to categorize numbers (Image credit: Petri/Bill Kindle)

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

PowerShell и условная логика: резюме

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

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

  • Else утверждения используются вместе с If утверждениями для создания условной логики, предоставляя вариантallback, когда условие не выполняется.
  • ElseIf утверждения также могут использоваться для создания условий, которые проверяются только если предшествующие If или ElseIf утверждения оцениваются в false, позволяя создавать более сложные условные логики.
  • Логические операторы, такие как И и ИЛИ, могут быть использованы для комбинирования нескольких условий в операторах If для управления последовательностью выполнения сценария. Здесь-строки также могут быть использованы в операторах If для сравнения строковых значений с многострочными строками.
  • Конкатенация строк с использованием оператора “+” также позволяет динамически объединять строки на основе определенных условий в операторах If.
  • Строки подключения обычно используются в операторах If для условного выполнения блоков кода в зависимости от успешного или неуспешного подключения к базам данных или внешним системам.
  • Операторы Break и Continue обеспечивают управление выполнением циклов и переключателей, и их можно использовать в операторах If для достижения определенного поведения.
  • Хэш-таблицы и массивы также могут использоваться в операторах If для проверки определенных условий и выполнения действий на основе этих условий.
  • Наконец, оператор Switch позволяет условное ветвление на основе значения переменной или выражения, обеспечивая выполнение различных блоков кода в зависимости от совпадения.

Спасибо за прочтение этого подробного руководства по операторам If в PowerShell, не стесняйтесь задавать вопросы в разделе комментариев ниже!

Source:
https://petri.com/powershell-if-statement/