PowerShellでCSVファイルを読み書きする方法【サンプルコード付きでわかりやすく解説】

PowerShell

業務でCSVファイルを扱う機会は多いですよね。たとえば以下のような場面:

  • 顧客データを読み込んで加工したい
  • 不要な行を削除して保存し直したい
  • 定期的にレポートを出力したい

そんなときに活躍するのがPowerShellのCSV操作機能です。
この記事では、PowerShellでCSVファイルを読み込む方法・加工する方法・書き出す方法を、実用例付きでわかりやすく紹介します。

CSVファイルとは?

CSV(Comma Separated Values)とは、カンマで区切られたテキスト形式のファイル。Excelなどでも簡単に開けます。たとえば以下のような形式です:

Name,Email,Age
Taro,taro@example.com,32
Hanako,hanako@example.com,28

このようなCSVをPowerShellで扱うと、1行ずつオブジェクトとして操作できるのがポイントです。

PowerShellでCSVを読み込む:Import-Csv

例:sample.csv を読み込む

$data = Import-Csv -Path "C:\data\sample.csv"

これで $data にCSVの中身が格納され、1行1行が「オブジェクト」になります。

特定の項目を表示

$data | Select-Object Name, Email

すべてのデータを1行ずつ表示

foreach ($row in $data) {
    Write-Output "$($row.Name) - $($row.Email)"
}

データを加工してみよう

年齢が30歳以上の人だけ表示

$data | Where-Object { $_.Age -ge 30 }

メールアドレスを全て小文字に変換

foreach ($row in $data) {
    $row.Email = $row.Email.ToLower()
}

PowerShellでCSVに書き出す:Export-Csv

例:加工したデータを新しいCSVに保存

$data | Export-Csv -Path "C:\data\filtered.csv" -NoTypeInformation

-NoTypeInformation を付けることで、最上部の型情報を除くことができます。

応用:新しい行を追加するには?

新しいレコードを作成

$newRow = [PSCustomObject]@{
  Name = "Kenta"
  Email = "kenta@example.com"
  Age = 24
}
$data += $newRow

応用:不要な列を削除するには?

“Age”列を削除したデータだけ書き出す

$data | Select-Object Name, Email | Export-Csv -Path "C:\data\no_age.csv" -NoTypeInformation

応用:日付付きファイル名で保存する

$today = Get-Date -Format "yyyyMMdd"
$filename = "report_$today.csv"
$data | Export-Csv -Path "C:\data\$filename" -NoTypeInformation

よくあるエラーと対策

❌ 「値がnullです」などのエラー
→ CSVの項目名が間違っている可能性があります。ヘッダー行と一致しているか確認しましょう。

❌ 「Access denied」
→ 保存先フォルダに書き込み権限があるか確認。PowerShellは管理者権限で実行するのがベストです。

PowerShellでCSVを操作するメリット

  • Excel不要でデータ加工ができる
  • 自動化スクリプトで繰り返し作業を時短
  • Windows環境だけで完結できる

定期レポートやログ管理、顧客情報処理など、あらゆる業務で活用できます

まとめ

PowerShellのCSV操作は、「読み込み」「加工」「書き出し」の3ステップを覚えるだけで、ぐっと可能性が広がります。
この記事で紹介したコードをもとに、ぜひご自身の業務にも応用してみてください。

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