業務で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ステップを覚えるだけで、ぐっと可能性が広がります。
この記事で紹介したコードをもとに、ぜひご自身の業務にも応用してみてください。