8

PowerShellで拡張メソッドを作成することはできますか?または、実行時に[string] liveのような既存のタイプの上に新しいメソッドを追加しますか?

4

2 に答える 2

10

特定の型に追加するメソッドまたはプロパティがある場合は、PowerShellの適応型システムを介してカスタム型拡張を作成できます。

カスタムタイプ拡張は、プロパティまたはスクリプトメソッドをタイプに記述し、Update-TypeDataコマンドレットを介してPowerShellセッションにロードするXMLファイルです。

この良い例は、PowerShellチームブログ-Hate Add-Member?にあります。(PowerShellのレスキューへの適応型システム)

于 2009-05-10T18:28:18.073 に答える
9

型に拡張メソッドをパッチする方法がわかりません。ただし、add-memberコマンドレットを使用してオブジェクトにパッチを適用することは確かに可能です。

PS> $a = "foo"
PS> $a = add-member -in $a -memberType ScriptMethod -name Bar -value { $this + "bar" } -passthru
PS> $a.Foo()
foobar

編集完全に完全に読み取り可能なPowerShell構文を説明します:)

私はPowerShellが大好きですが、実際には時々不可解な構文を思い付きます。

  • "-in":これはinputObjectの略で、基本的にこれにメンバーを追加すると言います
  • "-memberType":メソッド、ノートプロパティ、コードメソッドなど、ランタイムオブジェクトに追加できる値にはさまざまな種類があります。完全なリストについては、「get-helpadd-member-full」を参照してください。
  • "-passthru":メンバーが追加されたばかりのオブジェクトを取得し、パイプラインにプッシュします。このフラグがないと、割り当てはにパイプラインを割り当てて空にし$aます。
  • 割り当て呼び出しは、基本的$aに、追加したメソッドが含まれていることを確認します
于 2009-05-08T17:38:34.167 に答える