PowerShellの条件分岐(if・elseif・else・switch)を学びます。バッチファイルのif文より格段に表現力が高く、複雑な条件も簡潔に書けます。
if・elseif・else文
$score = 78
if ($score -ge 90) {
Write-Host "優"
} elseif ($score -ge 70) {
Write-Host "良" # ← これが実行される
} elseif ($score -ge 50) {
Write-Host "可"
} else {
Write-Host "不可"
}比較演算子まとめ
| 演算子 | 意味 | 大文字小文字無視 |
|---|---|---|
| -eq / -ne | 等しい / 等しくない | -ieq / -ine |
| -lt / -le | より小さい / 以下 | -ilt / -ile |
| -gt / -ge | より大きい / 以上 | -igt / -ige |
| -like / -notlike | ワイルドカードマッチ | -ilike |
| -match / -notmatch | 正規表現マッチ | -imatch |
| -contains / -notcontains | コレクションに含まれるか | -icontains |
| -in / -notin | 左辺が右辺コレクションに含まれるか |
ファイル・サービスの存在チェック
# ファイルの存在チェック
if (Test-Path "C:\work\data.txt") {
Write-Host "ファイルが存在します"
} else {
Write-Host "ファイルが見つかりません"
}
# サービスの状態チェック
$svc = Get-Service -Name "wuauserv" -ErrorAction SilentlyContinue
if ($svc -and $svc.Status -eq "Running") {
Write-Host "Windows Updateサービスは実行中"
} else {
Write-Host "サービスが停止中または存在しない"
}
# nullチェック
$value = $null
if ($null -eq $value) {
Write-Host "値が設定されていません"
}switch文(複数条件の分岐)
複数の値で分岐する場合、if-elseifを並べるよりswitch文の方がすっきり書けます。
$day = (Get-Date).DayOfWeek
switch ($day) {
"Monday" { Write-Host "月曜日 - 週の始まり" }
"Tuesday" { Write-Host "火曜日" }
"Wednesday" { Write-Host "水曜日" }
"Thursday" { Write-Host "木曜日" }
"Friday" { Write-Host "金曜日 - 週末まであと少し!" }
"Saturday" { Write-Host "土曜日 - お休み" }
"Sunday" { Write-Host "日曜日 - お休み" }
default { Write-Host "不明な曜日" }
}
# switchで複数条件・正規表現も使える
switch -Regex ($input) {
"^\d+$" { Write-Host "数字のみ" }
"^[a-z]+$" { Write-Host "小文字アルファベットのみ" }
default { Write-Host "その他" }
}三項演算子の代わり(インライン条件式)
# PowerShell 7以降では三項演算子が使える
$x = 10
$result = $x -gt 5 ? "5より大きい" : "5以下"
Write-Host $result
# PS 5.1でも動く書き方
$result = if ($x -gt 5) {"5より大きい"} else {"5以下"}PowerShellで「$null -eq $value」と書く順番に最初は違和感がありますが、これは意図的な推奨スタイルです。「$value -eq $null」だと$valueが配列の場合に予期しない動作をすることがあるため、$nullを左辺に置くのがベストプラクティスです。
hobbyshift管理人
まとめ
- if-elseif-elseで条件分岐を書く。比較演算子は-eq/-gt/-ltなど英語形式
- 大文字小文字を無視するには-ieq/-ilike/-imatchなど先頭に「i」をつける
- Test-Pathでファイル・フォルダの存在確認、$null -eq $valueでnullチェック
- switch文は複数条件の分岐を簡潔に書けて、正規表現マッチにも対応している



コメント