Home > Windows にまつわる e.t.c.

カスタムオブジェクトの作成とCSV出力


PowerShellでCSVファイルの入力は Import-Csv で簡単にできますが、CSV ファイルの出力はカスタムオブジェクトを作る必要があります。

カスタムオブジェクトを作ると聞くとハードル高そうですが、実は簡単に作れます。

論よりコードなので、実際にカスタムオブジェクトを作ってみましょう。

# カスタムオブジェクト(要素の入れ物)
$Datas = @()

# カスタムオブジェクトの要素作成(その1)
$Data = New-Object PSObject | Select-Object AAA, BBB, CCC

# カスタムオブジェクトの要素に値を設定(その1)
$Data.AAA = "Recode01-aaa"
$Data.BBB = "Recode01-bbb"
$Data.CCC = "Recode01-ccc"

# カスタムオブジェクトに要素(その1)を追加
$Datas += $Data

# カスタムオブジェクトの要素作成(その2)
$Data = New-Object PSObject | Select-Object AAA, BBB, CCC

# カスタムオブジェクトの要素に値を設定(その2)
$Data.AAA = "Recode02-aaa"
$Data.BBB = "Recode02-bbb"
$Data.CCC = "Recode02-ccc"

# カスタムオブジェクトに要素(その2)を追加
$Datas += $Data

# カスタムオブジェクトの表示
$Datas | ft -AutoSize

 

これを実行するとこんな感じになります。

PS C:\> $Datas = New-Object System.Collections.ArrayList
PS C:\>
PS C:\> $Data = New-Object PSObject | Select-Object AAA, BBB, CCC
PS C:\> $Data.AAA = "Recode01-aaa"
PS C:\> $Data.BBB = "Recode01-bbb"
PS C:\> $Data.CCC = "Recode01-ccc"
PS C:\> [void]$Datas.Add($Data)
PS C:\>
PS C:\> $Data = New-Object PSObject | Select-Object AAA, BBB, CCC
PS C:\> $Data.AAA = "Recode02-AAA"
PS C:\> $Data.BBB = "Recode02-BBB"
PS C:\> $Data.CCC = "Recode02-CCC"
PS C:\> [void]$Datas.Add($Data)
PS C:\>
PS C:\> $Datas | ft -AutoSize

AAA          BBB          CCC
---          ---          ---
Recode01-aaa Recode01-bbb Recode01-ccc
Recode02-AAA Recode02-BBB Recode02-CCC

簡単にカスタムオブジェクトを作ることが出来ました

カスタムオブジェクトが出来れば、CSV ファイルに出力するのは Export-Csv コマンドレットにカスタムオブジェクトを渡すだけです。

$OutputFilename = "c:\work\test.csv"
$Datas | Export-Csv $OutputFilename -Encoding Default

 

出力文字コード指定が出来るので、シフトJISで出力する場合は「-Encoding Default」を指定します。(-Encoding を省略すると UTF-16 で出力されます)

 

カスタムオブジェクトは、CSV 出力だけではなく、データーハンドリングに便利です。

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.