hakeの日記

Windows環境でプログラミングの勉強をしています。

PowerShell - 独自オブジェクトの作成

PSObjectにプロパティやメソッドを追加していくことで独自のオブジェクトが作成できます。

# Hashでプロパティを追加
$hash = @{name = "Taro"; age = 20}
$obj = New-Object PSObject -Property $hash

# Add-Memberでプロパティを追加
$obj | Add-Member -MemberType NoteProperty -Name str -Value "Hello"
$obj | Add-Member -MemberType ScriptProperty -Name talk `
            -Value {Write-Host "$($This.str), My Name is $($This.name)."} 

# プロパティのgetter/setterを追加
Add-Member -InputObject $obj `
           -MemberType ScriptProperty -Name nenrei `
           -Value { $this.age } `
           -SecondValue {
                param($age)
                $This.age = $age
             } 

# メソッドを追加
Add-Member -InputObject $obj `
           -MemberType ScriptMethod -Name greeting `
           -Value {
                param($str)
                $This.str = $str
             } 



$obj.GetType()
# IsPublic IsSerial Name                    BaseType
# -------- -------- ----                    --------
# True     False    PSCustomObject          System.Object

$obj.name           # Taro
$obj.age            # 20
$obj.str            # Hello
$obj.talk           # Hello, My Name is Taro.

# プロパティを直接変更
$obj.name = "Jiro"
$obj.talk           # Hello, My Name is Jiro.

# プロパティを直接変更
$obj.age = 25
$obj.age            # 25

# プロパティsetterで変更
$obj.nenrei = 30
$obj.nenrei         # 30

# プロパティをメソッドで変更
$obj.greeting("Good Morning")
$obj.talk           # Good Morning, My Name is Jiro.