【初心者向け】PowerShellのforeach完全ガイド

Windows

「複数のファイルに同じ処理をしたい」
「たくさんのデータを一つずつ確認したい」

そんなときに使うのが、PowerShellのforeachです。

foreachを使うと、リストの中身を一つずつ処理できます

これにより、面倒な作業を自動化できるようになります。

この記事では、PowerShellのforeachについて、基本的な使い方から実際の例、気をつけるポイントまで詳しく説明します。

スポンサーリンク

基本構文:PowerShellのforeachの書き方

PowerShellでは、foreachを2つの方法で書けます。

書き方その1:キーワード形式

説明

foreach ($変数名 in $リスト名) {
    # ここに処理を書く
}

$fruits = @("りんご", "バナナ", "オレンジ")
foreach ($fruit in $fruits) {
    Write-Output "果物: $fruit"
}

実行結果

果物: りんご
果物: バナナ  
果物: オレンジ

書き方その2:パイプライン形式

説明

$リスト名 | ForEach-Object {
    # $_ は今処理している要素
}

"りんご", "バナナ", "オレンジ" | ForEach-Object {
    Write-Output "果物: $_"
}

実行結果

果物: りんご
果物: バナナ
果物: オレンジ

どちらを使えばいい?

  • 書き方その1:スクリプトファイルを作るときにおすすめ
  • 書き方その2:コマンドラインで一行で書きたいときにおすすめ

実際に使える例

ファイル一覧を処理する

説明 フォルダの中にあるファイルを一つずつ確認したいとき

$files = Get-ChildItem "C:\Logs"
foreach ($file in $files) {
    Write-Output "処理中: $($file.Name)"
}

フォルダを一括で作る

説明 複数のユーザー用フォルダを一度に作りたいとき

$users = "田中", "佐藤", "鈴木"
foreach ($user in $users) {
    New-Item -Path "C:\Users\$user" -ItemType Directory
}

プロセス情報を取得する

説明
動いているプロセスの情報を見やすく表示したいときは、ForEach-Objectを使います。

Get-Process | ForEach-Object {
    "$($_.Name): $($_.Id)"
}

気をつけるポイント

変数名が重複する問題

問題のある例

$file = "重要なファイル"
foreach ($file in $files) {
    # $fileが上書きされてしまう!
}

解決方法 変数名を分かりやすく、重複しないようにつける

$importantFile = "重要なファイル"
foreach ($currentFile in $files) {
    # これなら安全
}

空のリストを処理する問題

問題のある例

$items = @()  # 空のリスト
foreach ($item in $items) {
    # 何も起きない(エラーにはならない)
}

解決方法 事前にリストが空でないか確認する

if ($items.Count -gt 0) {
    foreach ($item in $items) {
        # 処理
    }
} else {
    Write-Output "処理するデータがありません"
}

メソッド呼び出しの間違い

間違った例

"hello", "world" | ForEach-Object {
    Write-Output $_.ToUpper()  # エラーになる
}

正しい例

"hello", "world" | ForEach-Object {
    Write-Output ($_.ToUpper())  # 括弧をつける
}

まとめ

書き方特徴いつ使う?
foreach ($x in $y)読みやすいスクリプトファイル
ForEach-Object {}パイプラインと組み合わせコマンドライン

よく使う場面

  • ファイルやフォルダの一括処理
  • 複数のユーザー操作
  • プロセスやサービスの一括確認

コメント

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