【PowerShell】CSVファイルを読み込んで一括処理する方法

【PowerShell】CSVファイルを読み込んで一括処理する方法 PowerShell

PowerShellはCSVファイルとの親和性が高く、データの一括読み込みや処理にとても便利なツールです。Windows環境でデータを外部から取り込んで処理を行いたい場合、CSV形式での運用はよく用いられます。本記事では、CSVファイルをPowerShellで読み込み、それぞれの行に対して繰り返し処理を実行する基本的な方法を紹介します。

CSVファイルの準備と基本構造

まず、CSVファイルの基本的な構造を確認しておきます。たとえば以下のような内容を持つファイルをusers.csvとして保存しておきます。

Name,Email,Role
田中太郎,tanaka@example.com,Admin
山田花子,hanako@example.com,User
鈴木一郎,ichiro@example.com,User

このようなCSVは、列名をヘッダーとし、それ以降に各データが1行ずつ並ぶ形式です。PowerShellではこのような構造のCSVを簡単に読み込むことができます。

PowerShellでCSVを読み込んで処理する基本構文

CSVファイルを読み込むにはImport-Csvコマンドレットを使います。以下のスクリプトは、CSVの各行を1件ずつ処理して、内容を出力する例です。

$csvPath = "C:\data\users.csv"

$users = Import-Csv -Path $csvPath

foreach ($user in $users) {
    Write-Host "名前: $($user.Name) / メール: $($user.Email) / 権限: $($user.Role)"
}

このスクリプトを実行すると、CSVファイル内の各レコードがPowerShellのオブジェクトとして扱われ、$user.Nameや$user.Emailのようにプロパティを参照することができます。

条件によって処理を分ける例

たとえば、権限が「Admin」であるユーザーだけに対して別の処理をしたい場合は、以下のように条件分岐を追加することが可能です。

foreach ($user in $users) {
    if ($user.Role -eq "Admin") {
        Write-Host "管理者アカウント検出: $($user.Name) に通知を送信します。"
        # Send-MailMessageなどの処理もここに記述可能
    }
}

このように、CSVから取得した情報をもとに柔軟な分岐処理ができます。

実務での活用例

実際の業務では、ユーザーアカウントの一括登録、バックアップ対象のファイルリストの処理、特定のホストへのPingチェックなど、さまざまな用途でCSVデータを利用するケースがあります。たとえば、サーバー名一覧をCSVにまとめておき、それをもとに接続確認を行うスクリプトも簡単に書けます。

まとめ

PowerShellを使えば、CSVファイルからデータを読み込んで一括処理するスクリプトを非常にシンプルに書くことができます。日常業務の自動化や管理作業の効率化にも応用しやすく、習得しておくと非常に役立つテクニックです。定期処理やデータベース連携の前処理などにも応用可能なので、ぜひ実際の業務で活用してみてください。