###前提・実現したいこと
PowerShell(ver0.2)で、2つのcsvファイルを読み込み特定の列の値に対しそれぞれゼロ埋めとNULLの数値化を行い、その後、成型した値でマッチングを行い数値を文字列に置き換えてCSVファイルを出力するスクリプトを作っています。
・データ成型したい値の情報
値は1桁~3桁まであるので、すべて3桁にしたい
ex: 1 ⇒001 、10⇒010
※NULLの場合がある
<今問題なこと>
ゼロ埋め処理がうまく引き継がれていないのか、
その後のマッチング~置換・出力の前処理で下記のような結果になってしましいます。
もともと3桁の値 ⇒置換処理される
もともと1桁、2桁およびNULLの値 ⇒置換処理されない
どう組めばエラーなく、該当する全ての値を置換できるようになるかご教示ください。
###発生している問題・エラーメッセージ
null 値の式ではメソッドを呼び出せません。 発生場所 行:6 文字:19 + %{ $_.END.PadLeft <<<< (3,"0")} + CategoryInfo : InvalidOperation: (PadLeft:String) []、RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull インデックスの演算が失敗しました。配列のインデックスが null に評価されました。 発生場所 行:14 文字:19 + %{$_.ID2 = $dic[ <<<< $_.ID2] ; $_} | + CategoryInfo : InvalidOperation: (:) []、RuntimeException + FullyQualifiedErrorId : NullArrayIndex
###該当のソースコード
Windows
1 2 3Get-Content C:\work\INPUT_LIST.csv | ConvertFrom-Csv -Header ID,NAME,IP,HOST,HOST2 | 4 %{ $_.ID.PadLeft(3,"0")} 5 6Get-Content C:\work\INPUT.csv | ConvertFrom-Csv -Header No.,day,ID1,ID2 | 7 %{ $_.ID1.PadLeft(3,"0")} | 8 %{ $_.ID2.PadLeft(3,"0")} 9 10 $dic = @{} 11Get-Content C:\work\INPUT_LIST.csv | ConvertFrom-Csv -Header ID,NAME,IP,HOST,HOST2 | 12 %{$dic[$_.ID] = $_.NAME} 13 14Get-Content C:\work\INPUT.csv | ConvertFrom-Csv -Header No.,day,ID1,ID2 | 15 %{$_.ID1 = $dic[$_.ID1] ; $_} | 16 %{$_.ID2 = $dic[$_.ID2] ; $_} | 17 Export-Csv C:\work\data\OUTPUTData.csv -encoding Default
###試したこと
ネットで調べましたが開発経験が浅く解決に至りませんでした。
事前処理結果をテンポラリに格納して、置換処理時に参照するような処理が必要なのでしょうか。
###補足情報(言語/FW/ツール等のバージョンなど)
バージョン:2.0
実行環境:Winsows 7
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/03 09:29
2016/08/03 09:42
2016/08/04 02:18
2016/08/04 02:20
2016/08/04 02:57
2016/08/04 05:43
2016/08/04 14:10
2016/08/05 02:58
2016/08/05 05:52
2016/08/18 22:29