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