PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2005-12-18

[]任意のオブジェクトを作成する(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
Connection: close