ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

PowerShellでCSVを読み込む際に各プロパティの前後の空白を削除する

背景

スクリプトが使用するデータをCSVから読み込ませる際に意図しない空白がCSVに入り込んでしまい、処理が失敗してしまったという経験があるかたは多いと思います。このような空白が入り込むことにより引き起こされるエラーを回避するには、CSVから読み込んだデータを後続の処理工程に渡す前に余分な空白を削除する処理を組み込みます。

この「空白の削除処理」のやりかたは複数のやりかたがあり、特に正解はありません。

この投稿の目的

この投稿では、私が普段スクリプトを作成する際に使う「空白の削除処理」を情報共有します。「もっとスマートなやりかたあるよ」というかたがいましたらフィードバックをいただけると嬉しいです。

ソースコード

CSVを読み込む際に各プロパティの前後の空白を削除する処理:

#CSVファイルパス
$csvFilePath = "C:\work\input.csv"

#CSVの読み込み処理
$csvDatas = @()
$csvDatas += `
Import-Csv -Path $csvFilePath -Encoding UTF8 -ErrorAction Stop `
| select @{Name = "Title";            Expression = {$_.Title.trim()}},`
         @{Name = "Url";              Expression = {$_.Url.Trim()}},`
         @{Name = "Microsoft365Group";Expression = {$_.Microsoft365Group.Trim()}}

解説

実演のために用意したCSVがこちらです。各プロパティの前後にわざと空白をいれました。
f:id:wataruf01:20220329193116p:plain

読み込み処理の結果は以下の通りです。空白が削除されていることが分かります。
削除されるのはテキストの先頭行または最後尾にある空白です。テキストの間にある空白は削除されません。
f:id:wataruf01:20220329193333p:plain