Edited at

PowerShellで独自クラス定義からCSV出力まで

型付きプロパティの定義まで出来ると他の言語と同じ様に使えます

ソースコードからテーブル等の設計書リバース生成を想定


CSV出力クラス定義

class CsvOutData

{
# プロパティ
[string] $PhysicalName
[string] $LogicalName
[string] $Detail

# コンストラクタ
CsvOutData([string]$ByPhysicalName,[string]$ByLogicalName,[string]$Detail){
$this.PhysicalName = $ByPhysicalName
$this.LogicalName = $ByLogicalName
$this.Detail = $Detail
}
}


CSV出力クラス配列の定義

$CsvOutDataList = New-Object System.Collections.ArrayList


リストに値追加

二つのデータを追加する例

実際はソースコード等から抽出した情報をコンストラクタに引数として渡します

$CsvOutDataList.Add((New-Object CsvOutData("datamodel1","☆☆表","〇〇に依存")))

$CsvOutDataList.Add((New-Object CsvOutData("datamodel2","△△表","〇〇と□□に依存")))


値確認

これだけで値が出力される

$CsvOutDataList


CSVとして出力(TYPE情報あり)

$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_TYPE情報ありカンマ区切り.csv"


CSVとして出力(UTF8、TYPE情報あり)

$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_UTF8TYPE情報ありカンマ区切り.csv" -Encoding UTF8


CSVとして出力(UTF8、TYPE情報あり、タブ区切り)

タブ区切りにしたい時もある

$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_UTF8TYPE情報ありタブ区切り.csv" -Encoding UTF8 -Delimiter "`t"


CSVとして出力(UTF8、TYPE情報なし、カンマ区切り)

TYPE情報いらない

$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_UTF8TYPE情報なしカンマ区切り.csv" -Encoding UTF8 -NoTypeInformation


まとめ

# CSV出力クラス定義

class CsvOutData
{
# 内部データ
[string] $PhysicalName
[string] $LogicalName
[string] $Detail

# コンストラクタ(初期値のセット)
CsvOutData([string]$ByPhysicalName,[string]$ByLogicalName,[string]$Detail){
$this.PhysicalName = $ByPhysicalName
$this.LogicalName = $ByLogicalName
$this.Detail = $Detail
}
}

# CSV出力クラス配列の定義
$CsvOutDataList = New-Object System.Collections.ArrayList

# リストに値追加
$CsvOutDataList.Add((New-Object CsvOutData("datamodel1","☆☆表","〇〇に依存")))
$CsvOutDataList.Add((New-Object CsvOutData("datamodel2","△△表","〇〇と□□に依存")))

# 値確認
$CsvOutDataList

# CSVとして出力(TYPE情報あり)
$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_TYPE情報ありカンマ区切り.csv"

# CSVとして出力(UTF8、TYPE情報あり)
$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_UTF8TYPE情報ありカンマ区切り.csv" -Encoding UTF8

# CSVとして出力(UTF8、TYPE情報あり、タブ区切り)
$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_UTF8TYPE情報ありタブ区切り.csv" -Encoding UTF8 -Delimiter "`t"

# CSVとして出力(UTF8、TYPE情報なし、カンマ区切り)
$CsvOutDataList | Export-Csv -Path "$HOME\Desktop\CSV出力_UTF8TYPE情報なしカンマ区切り.csv" -Encoding UTF8 -NoTypeInformation