[Tips] メソッドを追加してみる

String型の値にダブルクォーテーションを付けて出力させる、という処理が頻繁にあったため、String型にメソッドを追加してみました。

メソッド名はAddDoubleQuoteとし、以下のようにして使用できるようにしたいと思います。

PS> $str = "Test"
PS> $str.AddDoubleQuote()
PS> "Test"

以下は、AddDoubleQuoteメソッド作成手順です。

まずは、xmlファイルを作成します。

<?xml version="1.0" encoding="utf-8" ?> 
<Types>  
  <Type> 
    <Name>System.String</Name> 
    <Members> 
      <ScriptMethod> 
        <Name>AddDoubleQuote</Name> 
        <Script> 
          '"' + $this + '"'
        </Script> 
      </ScriptMethod> 
    </Members> 
  </Type> 
</Types>

Stringクラスの拡張となるため、<Name>タグにはSystem.Stringを記述。

メソッド名は、AddDoubleQuoteとするので、<ScriptMethod>タグの中の<Name>タグの中に記述します。

そして、実際の処理は<Script>タグの中に記述します。

自分自身は$thisで表されます。ここでは$thisの両脇にダブルクォーテーションが付くようにしています。

上記のXMLファイルは、拡張子をps1xmlとして保存します。

今回は $pshome 配下に AddDoubleQuote.ps1xml という名前で保存しました。
AddDoubleQuoteメソッドを使用できるようにするには、Update-TypeDataコマンドレットを使用します。

update-typedata -prependpath C:\Windows\System32\WindowsPowerShell\v1.0\AddDoubleQuote.ps1xml

あとは、最初の例に示した方法で使用します。

PS> $str = "Test"
PS> $str.AddDoubleQuote()
PS> "Test"

追加したAddDoubleQuoteメソッドは、PowerShellコンソール単位でしか使えません。
処理を永続化したい場合は、$PROFILEに登録しておきましょう。

プロファイルがまだない場合は下記コマンドで作成します。

New-item –type file –force $profile

あとは、作成したプロファイルに下記を追加します。これで、次回以降PowerShellが起動されたときから AddDoubleQuoteメソッドが使えるようになります。

update-typedata -prependpath C:\Windows\System32\WindowsPowerShell\v1.0\AddDoubleQuote.ps1xml

コメント

タイトルとURLをコピーしました