PowerShellの基本制御文を完全解説:if・for・whileの使い方と実例まとめ

PowerShellはWindowsの自動化や管理に強力なスクリプト言語として使われており、基本的な「制御構文」を理解することは非常に重要です。
「if」文で条件分岐をしたり、「for」や「while」で繰り返し処理を行うことは、日常のスクリプト作成で欠かせません。
この記事では、PowerShellの制御文「if」「for」「foreach」「while」「do-while」の基本構文から応用的な使い方までを、具体例を交えてわかりやすく解説します。
これからPowerShellを学ぶ方、あるいは改めて基礎をおさらいしたい方に最適な内容です。


PowerShellのif文:条件分岐の基本

「if文」は、ある条件が真(True)かどうかによって処理を分ける制御構文です。

基本構文

if (条件) {
# 条件が真のときに実行される処理
}

elseやelseifの追加

if ($value -eq 1) {
Write-Output "値は1です"
} elseif ($value -eq 2) {
Write-Output "値は2です"
} else {
Write-Output "値は1でも2でもありません"
}

比較演算子の一例

  • -eq: 等しい
  • -ne: 等しくない
  • -gt: より大きい
  • -lt: より小さい
  • -ge: 以上
  • -le: 以下

使用例

$age = 20
if ($age -ge 18) {
Write-Output "成人です"
} else {
Write-Output "未成年です"
}

for文:決まった回数の繰り返しに便利

「for文」は、ループ変数を使って決まった回数だけ繰り返し処理を行う構文です。

基本構文

for ($i = 0; $i -lt 5; $i++) {
Write-Output "現在の値: $i"
}

この例では $i が0から4までの5回繰り返され、1回ごとに1ずつ増えます。

実践例:ファイルを連番で作成

for ($i = 1; $i -le 3; $i++) {
New-Item -Path "C:\Temp\sample$i.txt" -ItemType File
}

foreach文:配列やコレクションを処理する

「foreach」は、配列の各要素に対して順番に処理を行うときに使います。

基本構文

$colors = @("Red", "Green", "Blue")
foreach ($color in $colors) {
Write-Output "色: $color"
}

パイプとの組み合わせ

Get-Process | foreach {
Write-Output "プロセス名: $($_.Name)"
}

このように、コマンドの出力結果をループ処理することも可能です。


while文:条件が満たされる間繰り返す

「while」は、指定した条件がTrueの間だけ処理を繰り返します。

基本構文

$count = 0
while ($count -lt 3) {
Write-Output "カウント: $count"
$count++
}

無限ループになることもあるため、ループ内で条件が変化するように注意します。


do-while文:最低1回は処理を実行するループ

「do-while」は、条件のチェックをループの後に行う構文で、必ず1回は実行されます。

基本構文

$count = 0
do {
Write-Output "カウント: $count"
$count++
} while ($count -lt 3)

do-untilとの違い

$count = 0
do {
Write-Output "Untilカウント: $count"
$count++
} until ($count -ge 3)

「until」は条件がTrueになるまで繰り返します。使い分けることで処理の流れを柔軟に制御できます。


breakとcontinueでループ制御を強化する

PowerShellでは「break」や「continue」を使って、ループの途中で制御を変えることができます。

breakの例:条件に応じてループを抜ける

for ($i = 0; $i -lt 10; $i++) {
if ($i -eq 5) {
break
}
Write-Output $i
}

continueの例:特定条件をスキップ

for ($i = 0; $i -lt 5; $i++) {
if ($i -eq 2) {
continue
}
Write-Output $i
}

ネストされたifやループに注意

制御構文は入れ子(ネスト)にして使うこともできますが、複雑になると可読性が下がります。
以下はネストの一例です。

for ($i = 1; $i -le 3; $i++) {
if ($i % 2 -eq 0) {
Write-Output "$i は偶数です"
} else {
Write-Output "$i は奇数です"
}
}

ネストが深くなる場合は、処理を関数化するのも有効です。


スクリプトで制御構文を活かす実践例

制御文を組み合わせれば、複雑な自動化処理も可能です。

例:特定拡張子のファイルだけを削除

$files = Get-ChildItem -Path "C:\Logs"
foreach ($file in $files) {
if ($file.Extension -eq ".log") {
Remove-Item $file.FullName
Write-Output "削除: $($file.Name)"
}
}

このように、条件分岐とループを活用することで、現場のニーズに合った効率的なスクリプトが書けます。


まとめ:制御文を理解すればPowerShellはもっと便利になる

PowerShellの制御文「if」「for」「foreach」「while」「do-while」は、スクリプトを作成するうえで欠かせない基本構文です。
特に繰り返し処理や条件分岐を自在に使えるようになると、業務の自動化や効率化が大きく進みます。
今回紹介した構文とサンプルをもとに、ぜひ自分の環境で試してみてください。

タイトルとURLをコピーしました