qshinoの日記

Powershell関係と徒然なこと

Powershell カスタムオブジェクト

PowerShellカスタムオブジェクト

パイプや戻り値で使われているカスタムオブジェクトをコードで意識的に作成する方法。

作成方法

Hashから変換

$obj1 = [PSCustomObject]@{
    "Name" = "Tom";
    "Age" = 29;
}
$obj1.Name

応用:hashから既存オブジェクト作成

Add-Type -AssemblyName System.Windows.Forms

$form1 = [System.Windows.Forms.Form]@{
    Text = "Hello";
    Width = 400;
    Height = 200;
}

$form1.ShowDialog()

引数なしのコンストラクタのあるクラスで可能。無ければできない。エラーになる?

hashを引数に渡す

hashからの変換より少し面倒。

$props1 = @{
    "Name" = "Tom";
    "Age" = 29;
}
$obj1 = New-Object PSCustomObject -Property $props1

プロパティ毎

最も面倒な方法

$obj1 = New-Object PSCustomObject
$obj1 | Add-Member -MemberType NoteProperty -Name "Name" -Value "Tom"
$obj1 | Add-Member -MemberType NoteProperty -Name "Age" -Value 29

参考

http://blog.livedoor.jp/morituri/archives/54579410.html