LoginSignup
5
5

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-07-29

型付きプロパティの定義まで出来ると他の言語と同じ様に使えます
ソースコードからテーブル等の設計書リバース生成を想定

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
5
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5