閉じる

PowerShellのif else文で条件分岐をマスター:比較演算子や複数条件の書き方を解説

PowerShellを利用したシステム運用や自動化において、条件分岐は避けて通れない非常に重要な要素です。

特定の条件を満たした場合のみ処理を実行し、そうでない場合は別の処理を行うといった制御は、スクリプトの柔軟性を高めるために欠かせません。

本記事では、2026年現在の最新のPowerShell環境に基づき、if else文の基本から応用までを詳しく解説します。

比較演算子の適切な選び方や、複数の条件を組み合わせる論理演算子の活用方法など、実務で役立つ知識を深めていきましょう。

PowerShellにおけるif文の基本構造

PowerShellのif文は、他のプログラミング言語と同様に、指定した条件が「真(True)」であるか「偽(False)」であるかを判定して処理を分岐させます。

最もシンプルな形式は、ifキーワードの後に丸括弧で囲んだ条件式を記述し、その後の波括弧内に実行したい処理を記述する形です。

単一条件による分岐

まずは、1つの条件だけをチェックする基本的な書き方を確認しましょう。

PowerShell
# 数値が10より大きいかどうかを判定する
$value = 15

if ($value -gt 10) {
    Write-Host "値は10より大きいです。"
}
実行結果
値は10より大きいです。

上記の例では、変数 $value が10より大きい(-gt)ため、波括弧内のメッセージが表示されます。

PowerShellでは、比較演算子に「>」ではなく「-gt」のような独自のハイフン形式を使用するのが特徴です。

elseによる「それ以外」の処理

条件を満たさなかった場合に別の処理を実行したいときは、else を使用します。

PowerShell
# ファイルが存在するかどうかで処理を分ける
$filePath = "C:\temp\sample.txt"

if (Test-Path $filePath) {
    Write-Host "ファイルが見つかりました。"
} else {
    Write-Host "ファイルが存在しません。"
}

このように、elseを使用することで条件の漏れがなくなり、スクリプトの堅牢性が向上します。

elseifによる複数条件の分岐

3つ以上のパターンに分岐させたい場合は、elseif を挿入します。

PowerShell
$score = 85

if ($score -ge 90) {
    Write-Host "評価:優秀"
} elseif ($score -ge 70) {
    Write-Host "評価:良好"
} else {
    Write-Host "評価:要確認"
}
実行結果
評価:良好

elseif は必要に応じていくつでも追加できますが、あまりに多くなる場合は後述する switch 文の検討も必要になります。

PowerShellで使われる比較演算子のまとめ

PowerShellの条件分岐で最も重要なのが比較演算子の理解です。

一般的な言語で使われる ==!= ではなく、アルファベットの略称のような形式を採用しています。

数値や文字列の比較演算子

主要な比較演算子を下表にまとめました。

演算子意味
-eq等しい (Equal)$a -eq $b
-ne等しくない (Not Equal)$a -ne $b
-gtより大きい (Greater Than)$a -gt $b
-ge以上 (Greater than or Equal)$a -ge $b
-ltより小さい (Less Than)$a -lt $b
-le以下 (Less than or Equal)$a -le $b

これらの演算子は、数値だけでなく文字列の比較にも使用されます。

デフォルトでは大文字と小文字を区別しないというPowerShell特有の性質があるため注意が必要です。

大文字・小文字を区別する比較

もし「Apple」と「apple」を別のものとして扱いたい場合は、演算子の頭に c を付けます。

逆に、明示的に区別しないことを示したい場合は i を付けます(デフォルトと同じ動作です)。

PowerShell
# 大文字小文字を区別する比較
"PowerShell" -ceq "powershell" # Falseになる
"PowerShell" -ieq "powershell" # Trueになる

厳密なデータ照合を行うシステム管理スクリプトでは、-ceq を活用する場面が多くなります。

論理演算子による複雑な条件の組み合わせ

「AかつB」や「AまたはB」といった複数の条件を組み合わせるには、論理演算子を使用します。

-and(かつ)と -or(または)

複数の条件がすべて揃っているか、あるいはどれか1つでも満たしているかを判定します。

PowerShell
$age = 25
$hasLicense = $true

# 20歳以上、かつ免許を持っている場合
if ($age -ge 20 -and $hasLicense) {
    Write-Host "運転可能です。"
}

論理演算子を重ねることで、非常に細かい条件指定が可能になります。

ただし、条件式が長くなりすぎる場合は、括弧を使って優先順位を明確にすることが推奨されます。

-not(否定)の使い方

条件を反転させたいときは -not または ! を使用します。

PowerShell
$isAdmin = $false

if (-not $isAdmin) {
    Write-Host "管理者権限が必要です。"
}

直感的に理解しやすい方を選べますが、PowerShellの標準的なスタイルとしては -not が好まれる傾向にあります。

実践的な条件分岐のテクニック

基本を理解したところで、実際のスクリプト作成でよく使われるテクニックを見ていきましょう。

変数の値が $null かどうかを確認する

変数が空であるかどうかを判定するのは、エラーを防ぐための基本です。

PowerShell
if ($null -eq $myVariable) {
    Write-Host "変数は空です。"
}

ここで重要なのは、$null を左側に記述するという慣習です。

これは、配列などが右側にきた際に意図しない動作(フィルタリング動作)を防ぐための、PowerShellにおけるベストプラクティスとされています。

配列に特定の要素が含まれているか判定する

-contains 演算子を使うと、リストの中に特定の値があるかどうかを簡単にチェックできます。

PowerShell
$services = "Running", "Stopped", "Starting"

if ($services -contains "Running") {
    Write-Host "実行中のサービスが存在します。"
}

逆のパターンとして、-in を使うと「値が配列に含まれているか」という書き方も可能です。

if文をより綺麗に書くためのベストプラクティス

コードの可読性は、保守性の高いスクリプトを作る上で欠かせません。

条件分岐を記述する際に意識すべきポイントをいくつか紹介します。

早期リターン(ガード節)の活用

深いネスト(入れ子構造)は、コードを読みにくくする原因になります。

条件を満たさない場合にすぐに処理を終了させる「ガード節」を取り入れると、メインの処理をネストさせずに記述できます。

PowerShell
function Process-Data {
    param($data)

    if ($null -eq $data) {
        Write-Warning "データがありません。処理を終了します。"
        return
    }

    # ここにメインの処理を記述する
    Write-Host "データを処理中:$data"
}

このように書くことで、本来実行したい処理がどこにあるのかが一目でわかるようになります。

可読性のための改行とインデント

PowerShellの波括弧 { } の位置についてはいくつかのスタイルがありますが、一般的には if と同じ行に開始括弧を置くスタイルが広く使われています。

PowerShell
# 推奨されるスタイル
if ($condition) {
    # 処理
} else {
    # 処理
}

一貫したルールで記述することで、チームでの共同作業がスムーズになります。

switch文への切り替えタイミング

if文の elseif が4つも5つも続くような場合は、switch 文への書き換えを検討しましょう。

switch文を使うと、同じ対象に対する複数の値をすっきりと整理して記述できます。

PowerShell
$status = "Error"

switch ($status) {
    "Success" { Write-Host "成功しました" }
    "Warning" { Write-Host "警告があります" }
    "Error"   { Write-Host "エラーが発生しました" }
    Default   { Write-Host "不明なステータスです" }
}

特に、文字列のパターンマッチングやワイルドカード判定を行う場合は、if文よりも switch文の方が強力な機能を備えています。

まとめ

PowerShellの if else 文は、あらゆる自動化スクリプトの土台となる機能です。

独自の比較演算子や論理演算子の仕様を正しく理解することで、ミスの少ない効率的なコードが書けるようになります。

まずは基本的な -eq-ne から使い始め、慣れてきたら $null チェックの記述ルールやガード節によるリファクタリングにも挑戦してみてください。

条件分岐をマスターすれば、より複雑で高度なシステム管理タスクも、自信を持って自動化できるようになるでしょう。

今回紹介したテクニックを、ぜひ日々のスクリプト作成に役立ててください。

URLをコピーしました!