PowerShell は Windows 環境でのスクリプト作成に広く使用される便利なツールです。
プログラムの基本であるループ処理と分岐処理について、サンプルコードとあわせて記載していきます。
分岐処理
If-Else
分岐処理は特定の条件に基づいて異なるアクションを実行するために使用されます。if
、elseif
、else
ステートメントを使用して、条件分岐を行います。
# 条件による分岐処理の例
$number = 10
if ($number -gt 10) {
Write-Host "$number is greater than 10."
} elseif ($number -eq 10) {
Write-Host "$number is equal to 10."
} else {
Write-Host "$number is less than 10."
}
PowerShell で使用される -gt
と -eq
は、比較演算子です。これらの演算子は条件式で使われ、特定の条件が真か偽かを評価するのに役立ちます。
-gt
は “Greater Than”(より大きい)の略で、左側の値が右側の値より大きい場合にTrue
を返します。-eq
は “Equal”(等しい)の略で、二つの値が等しい場合にTrue
を返します。
Switch
Switch
は、一連の値を評価し、一致するケースに基づいて異なるアクションを実行することができます。
基本的な使用方法
基本的な Switch
ステートメントは次のように記述されます。
$color = '赤'
Switch ($color) {
'赤' { Write-Host '色は赤です。' }
'青' { Write-Host '色は青です。' }
'緑' { Write-Host '色は緑です。' }
default { Write-Host '色が識別されません。' }
}
$color
変数によって与えられた値に応じて異なるメッセージが表示されます。
値が ‘赤’、’青’、’緑’ のいずれかであれば、対応するメッセージが表示されます。一致するものがない場合は default
ケースが実行されます。
複数の値に対する一致
一つのケースで複数の値を評価することもできます。これには、カンマで値を区切ります。
$weather = '晴れ'
Switch ($weather) {
'晴れ', '曇り' { Write-Host '外出しやすい天気です。' }
'雨', '雪' { Write-Host '屋内で過ごすのがおすすめです。' }
default { Write-Host '天気が不確かです。' }
}
$weather
が ‘晴れ’ または ‘曇り’ の場合に同じアクションを実行します。同様に、’雨’ や ‘雪’ でも同じメッセージが表示されます。
スクリプトブロックと条件評価
Switch
ステートメントでは、複雑な条件やスクリプトブロックも利用できます。例えば、文字列のパターンマッチングを行うことができます。
$fileName = 'report.doc'
Switch -Regex ($fileName) {
'\.doc$' { Write-Host 'ファイルはドキュメントです。' }
'\.xls$' { Write-Host 'ファイルはスプレッドシートです。' }
default { Write-Host '未知のファイルタイプです。' }
}
-Regex
オプションを使用して、ファイル名が特定のパターンに一致するかどうかを判定しています。これにより、様々なファイルタイプを効率的に識別できます。
ループ処理
PowerShell では、foreach
、for
、while
、do-while
など、さまざまなループ処理がサポートされています。
For ループ
for
ループは、指定された回数だけコードブロックを繰り返し実行します。
# for ループの例
for ($i = 1; $i -le 5; $i++) {
Write-Host "Iteration $i"
}
Foreach ループ
foreach
ループはコレクションの各要素に対してコードブロックを実行します。
# foreach ループの例
$colors = "red", "green", "blue"
foreach ($color in $colors) {
Write-Host "Color: $color"
}
While ループ
while
ループは、条件が真の間、コードブロックを繰り返し実行します。
# while ループの例
$count = 1
while ($count -le 5) {
Write-Host "Count: $count"
$count++
}
Do-While ループ
do-while
ループは、最低一回はコードブロックを実行し、その後条件が真の間繰り返します。
# do-while ループの例
$count = 6
do {
Write-Host "Count: $count"
$count++
} while ($count -le 5)
Break と Continue を使用したループの制御
ループ内で特定の条件を満たした場合に早期にループを抜ける(Break
)、または次の繰り返しにスキップする(Continue
)方法を記載します。
Break の使用例
以下の例では、$i
が 5 になったときに Break
ステートメントが実行され、ループから抜け出します。
for ($i = 1; $i -le 10; $i++) {
if ($i -eq 5) {
Write-Host "ループを抜けます。"
Break
}
Write-Host "ループ中: $i"
}
Continue の使用例
以下の例では、$i
が偶数の場合、Continue
ステートメントが実行され、その繰り返しの残りの部分はスキップされます。結果として、奇数だけが表示されます。
for ($i = 1; $i -le 10; $i++) {
if ($i % 2 -eq 0) {
Continue
}
Write-Host "奇数: $i"
}