スクリプトに条件付きロジックを追加するためのPowerShell Ifステートメントの使用方法

PowerShellは多くの理由で強力なスクリプト言語です。そのような理由の1つは、条件ロジックのサポートであり、これによりPowerShellスクリプトをさらに効率的かつ効果的にすることができます。この記事では、IfElse、およびElseif条件ロジックの使用方法を学び、これがPowerShellスクリプトライターとしてあなたをどのように助けるかを説明します。

PowerShell If文の使用方法

PowerShell If は、コードの条件付き実行に使用されます。条件をテストし、条件がtrueまたはfalseに評価されるに応じて異なるコードブロックを実行することができます。

まず、PowerShell If文の使用方法を示す2つの例から始めましょう。

例1:数が正または負かどうかを確認する

次の例では、変数$numberが10に設定されています。If文は、$numberの値が-gt演算子を使用して0より大きいかどうかを確認します。

  • 条件がtrueの場合、最初の波括弧内のコードブロックを実行し、この場合、「数は正です。」と表示します。
  • 条件がfalseの場合、Elseifブロックに移動し、数が-lt演算子を使用して0より小さいかどうかを確認します。
  • もし条件が真であれば、2番目の波括弧のセット内のコードが実行され、「その数は負です」と出力されます。
  • 両方の条件が偽であれば、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文は、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で条件文がどのように機能するかの2つの基本的な例でした。次はElse文に移りましょう。

If文と一緒にPowerShellのElse文を使用する方法

PowerShellでは、ElseステートメントをIfステートメントと組み合わせて条件付きのロジックを作成できます。これにより、Ifステートメントの条件が偽の場合に実行されるコードブロックを指定できます。

PowerShellでElseステートメントを使用する方法を示す2つの例を示します。

Example 3: 変数が特定の数値より大きいかをチェックする

この例では、いくつかのチェックを行います:

  • Ifステートメントは、変数$numberが10より大きいかどうかをチェックします。
  • 条件が満たされると、「The number is greater than 10」というメッセージが表示されます。
  • 条件が満たされない場合、Elseブロックが実行され、「The number is not greater than 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)

Example 4: 変数の値と文字列を比較する

この例では、Ifステートメントが変数$userの値を文字列「John」と比較します。

  • それらが等しい場合、「Welcome, John!」というメッセージが表示されます。
  • 条件が満たされない場合、つまり$userの値が「John」でない場合、Elseブロックが実行され、「Access denied. You are not 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)

条件を評価し、その後のアクションを実行するにあたって、IfElse文の違いはあります。

  • If文は条件をチェックし、条件が真の場合にコードを実行します。
  • Else文は、If文の条件が偽の場合に実行される代替のコードブロックを提供します。If文の条件が真の場合、Elseブロックは実行されません。

要約すると、If文は特定の条件に基づいてコードを実行することを可能にします。Else文は、条件が偽の場合の代替オプションを提供します。これらの文を併用することで、PowerShellスクリプトでより柔軟で堅牢なロジックを作成できます。

PowerShell ElseIf文の使用方法

ElseIf文は、直前のIf文または直前のElseIf文が「偽」に評価されるかどうかをチェックする条件を作成します。ElseIf文を使用すると、複数の条件をテストし、それらの条件の評価に基づいて異なるコードブロックを実行できます。 ElseIf文は、2つ以上の結果がある場合に特に便利です。

PowerShellでElseIf文を使用した2つの例を以下に示します。

例5:数値の範囲を確認する

この例では、コードは$number変数の値をチェックし、その範囲に応じて異なるコードブロックを実行します。

  • 数が10未満の場合、最初の条件が真であり、対応するメッセージが表示されます。
  • そうでない場合、ElseIfステートメントを使用して次の条件をチェックします。数が10から19の間(両端を含む)、2番目の条件が真であり、対応するメッセージが表示されます。
  • 前の条件のいずれも真でない場合、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を超えない場合)、2番目の条件が真であり、対応するメッセージが表示されます。
  • 前の条件のいずれも真でない場合、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)

全体として、PowerShellのElseIfステートメントは、前のステートメントが偽に評価された場合にチェックする条件を指定します。これにより、複数の条件を処理し、異なるコードブロックを実行できます。

PowerShellのIF文でAND/OR文を使用する方法

PowerShellでは、「AND」と「OR」はスクリプトのフローを制御するために複数の条件を組み合わせるために使用される論理演算子です。これらは、複数の条件を同時に評価するためにIF文と共に使用できます:

その使用法を示し、IFELSE文との違いを強調するために、2つの例を提供します。

例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」と等しいかどうかを確認します。条件がtrueに評価される場合、サポートされているオペレーティングシステムが実行されていることを示すメッセージが表示されます。それ以外の場合は、サポートされていないオペレーティングシステムが実行されていることを示すメッセージが表示されます。

$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文とは異なり、後者は一度に1つの条件のみを評価します。 IfElse文の条件がtrueの場合、Ifステートメントに関連付けられたコードブロックを実行します。それ以外の場合、Elseステートメントに関連付けられたコードブロックを実行します。

以下のテキストを日本語に翻訳します。翻訳結果のみを返します。

これを示すために、例1をIfElseステートメントを使用するように変更しましょう。この変更された例では、スクリプトはまずユーザーが管理者かどうかをチェックします。trueの場合、アカウントがアクティブかどうかをチェックします。各条件の評価に応じて、異なるコードブロックを実行します。

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

このアプローチを使用すると、スクリプトのフローを細かく制御できます。ただし、論理演算子「AND」と「OR」を使用する場合と比較して、ネストされたコードブロックと複雑さが増す可能性があります。

ここでPowerShellのヒアドキュメントをIfステートメント内で使用する方法

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ステートメント内でヒアドキュメントを使用する方法をよりよく理解するために2つの例を示します。

特定のメッセージをチェックする例10

仮に、ユーザーに入力を求めるPowerShellスクリプトがあるとします。そして、ユーザーが「Hello, world!」など特定のメッセージを入力したかどうかをチェックしたいとします。ここでは、ユーザーの入力を期待されるメッセージと比較するために、ヒアドキュメントif文内で使用することができます。

次の例では、スクリプトはユーザーにメッセージを入力するよう促し、その入力を$userInput変数に格納します。その後、if文でヒアドキュメントを使用して、ユーザーの入力を期待されるメッセージと比較します。入力が期待されるメッセージと一致する場合は、「User entered the correct message」というメッセージが表示され、そうでない場合は「User entered a different message」と表示されます。

$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の2つのスクリプトブロックがあります。ユーザーコードが事前に定義されたコードと一致するかどうかをチェックしたいとします。ヒアドキュメントを使用してスクリプトブロックを定義することで、If文内でそれらを比較することができます。

ユーザーコードが事前に定義されたコードと一致する場合、「The user code matches the predefined code」と表示され、そうでない場合は「The user code differs from the predefined code」と表示されます。

$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ステートメントでの連結の使用方法を示す2つの例があります。

例1:文字列変数の連結

この例では、$firstNameと$lastNameの2つの文字列変数が定義されています。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:文字列リテラルの連結

この2番目の例では、3つの変数が定義されています:値が「Hello」の$greeting、値が「Alice」の$name、値が30の$ageです。 if文は、$name変数が値を持っているかどうかをIsNullorEmpty()メソッドを使用してチェックします。

  • Trueの場合、挨拶、名前、および年齢を+演算子を使用して連結するメッセージを作成します。その結果のメッセージを$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)

全体として、これらの2つの例は、連結操作が特定の条件に基づいて動的に文字列を結合することを可能にする方法を示しています。

Ifステートメントで接続文字列を使用する方法

接続文字列は、データベースやその他の外部システムへの接続を確立するために一般的に使用されます。これらの文字列には、接続を確立するために必要なサーバー、データベース名、資格情報、およびその他のパラメータに関する情報が含まれています。

Ifステートメントでは、接続の成功または失敗に基づいて特定のコードブロックを実行するために接続文字列を使用できます。PowerShell Ifステートメントでの接続文字列の使用を示す2つの例を以下に示します:

例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: ネットワーク接続のチェック

この2つめの例では、サーバーの名前とポート番号を指定する接続文字列($connectionString)を定義し、その接続文字列を使用してTcpClientオブジェクトを作成します。tryブロック内では、$tcpClient.Connect(”server_name”, 1234)を使用してサーバーへの接続を確立しようとします。

  • 接続が成功した場合、tryブロックの下でコードブロックが実行され、成功した接続が表示されます。
  • 例外が発生した場合(つまり、接続が失敗した場合)、コードブロックは
# 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)

catchブロックの下で実行され、失敗した接続が表示されます。

Ifステートメント内でBreakおよびContinueステートメントを使用する方法

PowerShellでは、BreakおよびContinueステートメントは、ループおよびスイッチ内の実行フローを制御するために使用されます。 Breakはループまたはスイッチから抜けることを可能にし、Continueは現在の繰り返しをスキップして次の繰り返しに移動することができます。

これらのステートメントは通常、ループ内で使用されますが、Ifステートメント内でも特定の動作を実現するために使用することができます。 2つの簡単な例を使用して、BreakおよびContinueをIfステートメント内で使用する方法を調べてみましょう。

例16:If文でBreakを使用する

この例では、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:If文でContinueを使用する

この例でも、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文でハッシュテーブルを使用する方法を示す2つの例があります。

例18:ハッシュテーブル内に特定のキーが存在するかどうかを確認する

この例では、3つのキーと値のペアを持つ$myHashtableという名前のハッシュテーブルがあります。If文は、ContainsKey()メソッドを使用してハッシュテーブル内にキー「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文は、ContainsValue()メソッドを使用してハッシュテーブル内に値「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ステートメントで使用する例を2つ示します。

例20:特定の値が配列に含まれているかどうかを確認する

この例では、数値のシーケンスを含む$numbersという配列があります。Ifステートメントは、-contains演算子を使用して配列が値「3」を含んでいるかどうかをチェックします。条件が真であれば、「The array contains the value 3.」と出力されます。それ以外の場合は、「The array does not contain the value 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と等しいかどうかをチェックします。条件が真であれば、「The array is empty.」と出力されます。それ以外の場合は、「The array is not empty.」と出力されます。

# 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)

PowerShellでSwitchステートメントを使用する方法

PowerShellのSwitchステートメントは、変数や式の値に基づいて条件付き分岐を行う方法を提供します。単一の値を複数の値と比較し、一致に応じて異なるコードブロックを実行することができます。

以下は、PowerShellでSwitchステートメントを使用する方法の説明と、簡単に理解できる2つの例です。

例22: 曜日のチェック

この例では、現在の曜日を表す$day変数があります。Switchステートメントは、文字列「Monday」、「Tuesday」などを使用して$dayの値を異なるケースと比較します。

  • 一致する場合、スクリプトは対応するコードブロックを実行します。
  • 一致しない場合、スクリプトはデフォルトブロックを実行します。ここでは、出力は「週の始まりです!」になります。
$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: 数値の分類

この2番目の例では、値が42の$number変数があります。Switchステートメントは、スクリプトブロックを使用して$numberの値を異なるケースと比較します。最初のケースは数値が0より小さいかどうかをチェックし、2番目のケースは数値が0より大きいかどうかをチェックします。他のケースに一致しない場合は、デフォルトブロックが実行されます。ここでは、出力は「正の数です。」になります。

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

両方の例では、各ケース内のコードブロックをカスタマイズして、一致する条件に基づいて任意のアクションを実行できます。

PowerShellと条件付きロジック:要約

全体として、Ifステートメントとそれに関連する構造は、PowerShellスクリプトで条件付きロジックを実装するための強力なツールを提供します。 Ifステートメントは、条件をテストして条件がtrueまたはfalseに評価されるかに基づいて異なるコードブロックを実行することを可能にするため、コードの条件付き実行を行うために不可欠です。

この記事で提供した例では、PowerShell Ifステートメントが数値が正または負であるか、またはファイルが存在するかどうかをチェックするためにどのように使用できるかを示しました。 ただし、この記事では他にも多くの条件付きロジックのテクニックを詳細に説明して、PowerShellスクリプトライターとしてのスキル向上を支援しました。 ここには非常に密度の濃い情報が含まれているので、覚えておくべきことがここにあります。

  • Elseステートメントは、条件が満たされない場合のフォールバックオプションを提供するために、Ifステートメントと一緒に使用されます。
  • ElseIfステートメントは、前のIfまたはElseIfステートメントがfalseに評価された場合にのみチェックされる条件を作成するためにも使用でき、より複雑な条件付きロジックを可能にします。
  • 論理演算子(ANDやORなど)は、スクリプトのフローを制御するためにIf文で複数の条件を組み合わせるために利用できます。ヒアストリングもIf文内で複数行の文字列と比較するために使用できます。
  • また、文字列の連結には’+’演算子を使用して、If文内で特定の条件に基づいて動的に文字列を結合することもできます。
  • 接続文字列は、データベースや外部システムへの接続の成功または失敗に基づいてコードブロックを条件付きで実行するためによくIf文で使用されます。
  • Break文やContinue文は、ループやスイッチの実行を制御し、特定の動作を実現するためにIf文内で使用することができます。
  • ハッシュテーブルや配列も、If文で特定の条件をチェックし、その条件に基づいてアクションを実行するために使用できます。
  • 最後に、Switch文は、変数や式の値に基づいて条件分岐を行い、一致に応じて異なるコードブロックを実行できます。

PowerShellのIf文に関する詳細なガイドをお読みいただきありがとうございます。コメント欄で質問があればお気軽にどうぞ!

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