任意のオブジェクトを作成する(2)

任意のオブジェクトを作成する(1) - PowerShell Memoの続きです。

「System.Management.Automation.MshObject」に任意のプロパティやメソッドを追加することで、任意のオブジェクトを作成することができます。


MshScriptPropertyは[ScriptBlock]としてプロパティを定義します。
[ScriptBlock]に計算式を含めることで、他のプロパティの値に連動して値が変換するプロパティを作成できます。

プロパティの追加(MshScriptProperty)

以下のサンプルでは「value(MshNoteProperty)」の値を3倍した値を持つ、「NewScriptProperty(MshScriptProperty)」を追加しています。

MSH C:\> $o = new-object Management.Automation.MshObject
MSH C:\> $value = [int]10
MSH C:\> $p = new-object Management.Automation.MshNoteProperty `
"value", $value
MSH C:\> $script = {$this.value * 3}
MSH C:\> $sp = new-object Management.Automation.MshScriptProperty `
"NewScriptProperty", $script
MSH C:\> $o.MshObject.Members.Add($p)
MSH C:\> $o.MshObject.Members.Add($sp)
MSH C:\> $o

 value   NewScriptProperty
 -----   -----------------
    10                  30

MSH C:\> $o.value = 15
MSH C:\> $o


 value   NewScriptProperty
 -----   -----------------
    15                  45