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(ユーザーインターフェース)を作成する方法を紹介する予定です!
コメント