People hangout together at coffee shop
PowerShellはWindowsの自動化や管理に強力なスクリプト言語として使われており、基本的な「制御構文」を理解することは非常に重要です。
「if」文で条件分岐をしたり、「for」や「while」で繰り返し処理を行うことは、日常のスクリプト作成で欠かせません。
この記事では、PowerShellの制御文「if」「for」「foreach」「while」「do-while」の基本構文から応用的な使い方までを、具体例を交えてわかりやすく解説します。
これからPowerShellを学ぶ方、あるいは改めて基礎をおさらいしたい方に最適な内容です。
「if文」は、ある条件が真(True)かどうかによって処理を分ける制御構文です。
if (条件) {
# 条件が真のときに実行される処理
}
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 ($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」は、配列の各要素に対して順番に処理を行うときに使います。
$colors = @("Red", "Green", "Blue")
foreach ($color in $colors) {
Write-Output "色: $color"
}
Get-Process | foreach {
Write-Output "プロセス名: $($_.Name)"
}
このように、コマンドの出力結果をループ処理することも可能です。
「while」は、指定した条件がTrueの間だけ処理を繰り返します。
$count = 0
while ($count -lt 3) {
Write-Output "カウント: $count"
$count++
}
無限ループになることもあるため、ループ内で条件が変化するように注意します。
「do-while」は、条件のチェックをループの後に行う構文で、必ず1回は実行されます。
$count = 0
do {
Write-Output "カウント: $count"
$count++
} while ($count -lt 3)
$count = 0
do {
Write-Output "Untilカウント: $count"
$count++
} until ($count -ge 3)
「until」は条件がTrueになるまで繰り返します。使い分けることで処理の流れを柔軟に制御できます。
PowerShellでは「break」や「continue」を使って、ループの途中で制御を変えることができます。
for ($i = 0; $i -lt 10; $i++) {
if ($i -eq 5) {
break
}
Write-Output $i
}
for ($i = 0; $i -lt 5; $i++) {
if ($i -eq 2) {
continue
}
Write-Output $i
}
制御構文は入れ子(ネスト)にして使うこともできますが、複雑になると可読性が下がります。
以下はネストの一例です。
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の制御文「if」「for」「foreach」「while」「do-while」は、スクリプトを作成するうえで欠かせない基本構文です。
特に繰り返し処理や条件分岐を自在に使えるようになると、業務の自動化や効率化が大きく進みます。
今回紹介した構文とサンプルをもとに、ぜひ自分の環境で試してみてください。