2010年11月5日金曜日

◆型にメンバーを追加する(Update-TypeData)

PowerShell: ◆オブジェクトにプロパティを追加する(Add-Member)ではオブジェクトにOwnerプロパティを追加してみた。

しかし、この方法では都度オブジェクトに対してメンバーを追加する必要がある。
頻繁に使う場合は型自体にプロパティを追加したほうが便利だ。

もともとPowershellでは.NETの型に独自のメソッドやプロパティを追加している。

Dir | Get-Member
で表示されるScriptPropertyなどが追加されたものである。

これらは$pshomeにあるTypes.ps1xmlというファイルで定義されており、簡単に拡張することができる。(中身をみればだいたい想像がつくと思う)

試しにTypes.ps1xmlをMyTypes.ps1xmlという名前でコピーして$pshomeに置き、以下のように編集してみた。

<?xml version="1.0" encoding="utf-8" ?>

<Types>
    <Type>
        <Name>System.IO.FileInfo</Name>
        <Members>
            <ScriptProperty>
                <Name>Owner</Name>
                <GetScriptBlock>
                  $this.GetAccessControl().owner
                </GetScriptBlock>
            </ScriptProperty>
  
        </Members>
    </Type>
</Types>

あとはUpdate-TypeDataコマンドレットでこれを追加してあげればよい。

Update-TypeData -PrependPath $pshome\MyTypes.ps1xml

結果はこんな感じになる。
20101105234320

Update-TypeDataを$profileに追加しておけば常にownerプロパティが使える。

詳細はabout_Types.ps1xmlを参照すると良い。

0 件のコメント:

コメントを投稿