about_If

簡単な説明

1つまたは複数の条件付きテストの結果に基づいてステートメントリストを実行するために使用できる言語コマンドについて説明します。

長い説明

指定した条件テストが true と評価された場合に、ステートメントを使用して If コードブロックを実行できます。 前のテストがすべて false と評価された場合に実行する1つ以上の条件付きテストを指定することもできます。 最後に、他の条件付きテストが true と評価されなかった場合に実行される追加のコードブロックを指定できます。

構文

次の例は、ステートメントの構文を If 示しています。

if (<test1>)
    {<statement list 1>}
[elseif (<test2>)
    {<statement list 2>}]
[else
    {<statement list 3>}]

ステートメントを実行 If すると、PowerShell によって条件式が <test1> true または false として評価されます。 が true の場合 <test1><statement list 1> が実行され、PowerShell によってステートメントが If 終了します。 が false の場合 <test1> 、PowerShell は条件付きステートメントによって <test2> 指定された条件を評価します。

ブール型の評価の詳細については、「 about_Booleans」を参照してください。

が true の場合 <test2><statement list 2> が実行され、PowerShell によってステートメントが If 終了します。 と <test2> の両方 <test1> が false と評価された場合、> コードブロックが <statement list 3 実行され、PowerShell は If ステートメントを終了します。

複数 Elseif のステートメントを使用して、一連の条件付きテストをチェーンすることができます。 そのため、各テストは、前のすべてのテストが false の場合にのみ実行されます。 多く Elseif のステートメントを含むステートメントを作成 If する必要がある場合は、代わりに Switch ステートメントを使用することを検討してください。

例:

最も単純 If なステートメントには1つのコマンドが含まれており、Elseif ステートメントや Else ステートメントは含まれていません。 次の例は、ステートメントの最も単純な If 形式を示しています。

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}

この例では、$a 変数が2より大きい場合、条件は true に評価され、ステートメントリストが実行されます。 ただし、$a が2以下であるか、または既存の変数 If ではない場合、ステートメントはメッセージを表示しません。

Else ステートメントを追加すると、$a が2以下の場合にメッセージが表示されます。 次の例に示すように、次のようになります。

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}
else {
    Write-Host ("The value $a is less than or equal to 2," +
        " is not created or is not initialized.")
}

この例をさらに絞り込むために、$a の値が2に等しい場合に、Elseif ステートメントを使用してメッセージを表示することができます。 次の例に示すように、次のようになります。

if ($a -gt 2) {
    Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
    Write-Host "The value $a is equal to 2."
}
else {
    Write-Host ("The value $a is less than 2 or" +
        " was not created or initialized.")
}

三項演算子の構文の使用

PowerShell 7.0 では、三項演算子を使用した新しい構文が導入されました。 C# の三項演算子の構文に従います。

<condition> ? <if-true> : <if-false>

三項演算子は、簡略化 if-else されたステートメントと同様に動作します。 <condition>式が評価され、結果がブール値に変換されて、次に評価する分岐を決定します。

  • <if-true> 式は、<condition> 式が true の場合に実行されます
  • <if-false> 式は、<condition> 式が false の場合に実行されます

次に例を示します。

$message = (Test-Path $path) ? "Path exists" : "Path not found"

この例では、がを返す $trueTest-Path 、の $message 値は "Path exists" になります。 がを返す $false 場合 Test-Path 、の $message 値は "Path not found" になります。

$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)

この例では、サービスが実行されている場合は停止され、状態が 実行中 でない場合は開始されます。

関連項目