この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。Microsoft LearnのImport-Csv -Delimiter仕様を確認し、CSVが1列に見えるときの切り分けをダミーデータで試せる形にしました。この記事作成時にはPowerShell実行を行っていません。検証ステータス:📘 Microsoft公式仕様確認済み・PowerShell実行未確認
情報確認日:2026年10月2日。
CSVでも区切り文字が必ずカンマとは限りません。セミコロン区切りを既定のカンマとして読むと1列のように見えることがあります。
列数を見る
@' Id;Name 1;Alice 2;Bob '@ | Set-Content -LiteralPath "$env:TEMP\demo.csv" -Encoding utf8 $data = Import-Csv "$env:TEMP\demo.csv" -Delimiter ';' $data[0].PSObject.Properties.Name
Delimiterの既定値はカンマです。指定文字が実際の区切りと一致しないと、列を別々のプロパティへ正しく分けられません。
1か所変える
Import-Csv "$env:TEMP\demo.csv" -Delimiter ','
ヘッダー全体が一つのプロパティ名のように見えたら、データ破損と決めつける前にDelimiterを疑えます。
列数を機械確認する
$row = Import-Csv "$env:TEMP\demo.csv" -Delimiter ';' | Select-Object -First 1 $row.PSObject.Properties.Count
flowchart TD A["CSV受領"] --> B["区切り文字確認"] B --> C["Import-Csv -Delimiter"] C --> D["列名/列数確認"] D --> E["後続処理"]
仕事で使うなら
文字コード、引用符、改行、ヘッダー名も確認します。読み込み直後に必須列を検証し、想定外なら後続処理を止めます。
「CSVなのに1列」は壊れているとは限らない
CSVという呼び名でも、実際のfileではcomma以外のdelimiterが使われることがあります。Import-Csvは「見た目で自動判定してくれる万能parser」と考えず、受け取ったdataのdelimiterとheaderを確認してから読み込む方が安全です。
特に自動処理では、Import-Csvがerrorにならず「1列として正常に読めてしまう」ケースが厄介です。そのまま後続処理へ渡すのではなく、期待するproperty名や列数を最初に検証して、想定外なら停止するようにすると誤更新を防げます。

