パワーシェルの条件分岐とループ処理【実践スクリプトで解説】


PowerShellでの自動化をさらにパワーアップさせるには、**「条件分岐」と「ループ処理」**の使い方をマスターするのがポイントです。この記事では、それぞれの基本構文と実用的なサンプルを紹介します。


条件分岐:if 文の使い方

基本構文

if (条件式) {
    # 条件が真(true)のとき実行
} else {
    # 偽(false)のとき実行
}

例:ファイルが存在するかどうか確認

$file = "C:\Data\report.xlsx"

if (Test-Path $file) {
    Write-Output "ファイルが存在します"
} else {
    Write-Output "ファイルが見つかりません"
}

複数条件:elseif

$size = 100

if ($size -gt 1000) {
    Write-Output "大容量ファイル"
} elseif ($size -gt 100) {
    Write-Output "中容量ファイル"
} else {
    Write-Output "小容量ファイル"
}

ループ処理:for / foreach / while

for 文(数値カウント)

for ($i = 1; $i -le 5; $i++) {
    Write-Output "カウント:$i"
}

foreach 文(リストの繰り返し)

$files = Get-ChildItem "C:\Logs" -Filter *.log

foreach ($file in $files) {
    Write-Output "ログファイル:$($file.Name)"
}

while 文(条件を満たす限り繰り返す)

$count = 0

while ($count -lt 3) {
    Write-Output "ループ:$count"
    $count++
}

実践例:ログファイルを日付別に振り分ける

$source = "C:\Logs"
$destRoot = "D:\ArchivedLogs"

$files = Get-ChildItem $source -Filter *.log

foreach ($file in $files) {
    $date = $file.LastWriteTime.ToString("yyyy-MM-dd")
    $destFolder = "$destRoot\$date"
    
    if (!(Test-Path $destFolder)) {
        New-Item -Path $destFolder -ItemType Directory
    }

    Move-Item $file.FullName -Destination $destFolder
}

このスクリプトは、ログファイルを更新日ごとに自動で分類して移動します。実務でもすぐに使える実践的な例です。


まとめ

条件分岐とループを使うことで、PowerShellスクリプトは一気に柔軟かつ強力になります。毎日の定型業務の自動化や、大量データの一括処理に役立てましょう。

次回は、PowerShellスクリプトでGUI(ユーザーインターフェース)を作成する方法を紹介する予定です!


コメント

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