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 は条件式を true または <test1> false として評価します。 が <test1> true の場合は <statement list 1> が実行され、PowerShell は ステートメントを終了 If します。 が <test1> false の場合、PowerShell は条件ステートメントで指定された条件を <test2> 評価します。

ブール評価の詳細については、「ブール値の評価」をabout_Booleans。

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

複数のステートメントを Elseif 使用して、一連の条件付きテストを連結できます。 したがって、各テストは、前のすべてのテストが false の場合にのみ実行されます。 多数のステートメントを含むステートメントを作成する必要がある場合は、代わりに If Elseif 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 ステートメントを追加すると、2 以下$aメッセージが表示されます。 次の例に示すように、

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.")
}

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

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.")
}

3 項演算子構文の使用

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

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

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

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

次に例を示します。

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

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

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

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

関連項目