この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。PowerShellのImport-CsvとPSObject.Propertiesを使い、CSVの列名変更を読み取り専用で検出する方法を整理しました。
検証ステータス:📘 Microsoft公式仕様確認済み・実機未確認
CSV連携で怖いのは、ファイルが開けるのに列名だけ変わっているケースです。値を見る前にヘッダーを比較すると、後工程の誤処理を早く止められます。
まず試す
@' Id,Name,Amount 1,Alice,100 '@ | Set-Content .\old.csv @' Id,CustomerName,Amount 1,Alice,100 '@ | Set-Content .\new.csv $old = (Import-Csv .\old.csv | Select-Object -First 1).PSObject.Properties.Name $new = (Import-Csv .\new.csv | Select-Object -First 1).PSObject.Properties.Name Compare-Object $old $new
ここを見る
Name と CustomerName が差分として出ることを確認します。行データではなく列名だけを比べているのがポイントです。
なぜ分かるのか
Import-Csv はヘッダーをプロパティ名として扱います。PSObject.Properties.Name を読むと、CSVの列構造だけを取り出せます。
1か所変える
Amount を Total に変えて再実行します。差分がもう1組増えることを確認してください。
仕事で使うなら
Excel出力、会計CSV、基幹システム受け渡しでは、処理開始前のschema gateとして使えます。本番ファイルを上書きせず、まず列名を確認してから後工程へ渡す設計が安全です。
注意
0行CSVではサンプルの Select-Object -First 1 から列を取得できません。実用品ではヘッダーだけのファイルも別処理にします。
