Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

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
sakkuntyo
UbuntuとNodejsをよく使います。 今はAzureに触れています。
https://sakkuntyo.github.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away