1

これは私の前の質問の続きです:

PowerShellで動作(メソッド)を使用して実際のオブジェクトを作成するにはどうすればよいですか?

これで、自分の動作をクラスにカプセル化できるようになったと思いますが、それでもこのアプローチはハッキーだと思います。この問題にPowerShellの方法で対処したいと思います。

したがって、Powershellモジュールが答えのようです...

たとえば、PowerShellでオブジェクト指向の方法で動作をカプセル化するかどうかを知りたいのですが、最適なオプション/アプローチは何ですか?

PowerShellモジュールはこの目的のために設計されていますか?

編集01

言い換えれば、皆さんはどのようにスクリプトを作成しますか?

手続き的な方法でそれらを書きに行きますか

また...

PowerShellスクリプトを作成するときに、オブジェクト指向プログラミングの概念を適用するためのよりクリーンな方法はありますか?

4

2 に答える 2

4

それが最良の方法かどうかはわかりませんが、pscustomobjectを使用してみませんか?

$o=New-Object -TypeName pscustomobject -Property @{"val"="test"}
Add-Member -InputObject $o -MemberType ScriptMethod -Name upper -Value {$this.val.toUpper()}
$o.upper()

TEST

または、codeplexでこのプロジェクトに満足しているかもしれません:http://psclass.codeplex.com/

于 2013-02-12T19:27:06.793 に答える
3

これについての私の見解は次のとおりです。スクリプト言語がこれまでオブジェクト指向であったとは思いません。それらのほとんどはある種のオブジェクトモデルをサポートしますが、これはそれらの主な目的ではありません。

Powershellは、.NET上に構築されているため、.NETのオブジェクトモデルに完全にアクセスできるため、サポートされています。

インラインC#コードをPowerShellスクリプト(クラスとすべてを含む)で記述し、その場でコンパイルしてから繰り返し実行できます。これを行うことに慣れたら、それはまったく難しいことではありません。

それ自体では、PowerShellは.NETで見つけることができるものをはるかに超えるオブジェクトシステムを提供しません。

まだ見つけていない場合は、Add-Memberコマンドレットを参照してください。宗教的または文化的な理由で、PowerShellコードにc#クラスを埋め込みたくない場合は、これが目的に最も近いものになります。

お役に立てれば。

于 2013-02-12T19:28:33.923 に答える