おそらく、この質問は以前に回答されています....しかし、私のニーズに対する具体的な回答は見つかりませんでした。
ところで、私はPowerShell 3を使用しています
私は PowerShell の初心者ですが、C# 開発者として多くの経験があるので、オブジェクトを操作することは私にとって非常に重要です。
そのため、PowerShell スクリプトでOOP の概念(すべてではありませんが、すべてではありません)を適用するクリーンな方法があるかどうか疑問に思っています。たとえば、私がやりたい特定のことがあります。
注: PowerShell で C# コードを記述して DTO を作成できることと、C# で PowerShell バイナリ モジュールを作成できることは認識しています。過去にそれを行ったことがありますが、今探しているのは、すべてのコードは PowerShell で作成されていますが、オブジェクト指向の方法で作成されています。
私がやりたいこと:
PowerShell でオブジェクトを作成し、同様に PowerShell で記述された関数を次のように公開します。
function New-Person ( [Parameter()][string]$firstName ) { function Walk() { Write-Host "Walking..."; } $person = New-Object psobject; $person | Add-Member -MemberType NoteProperty -Name FirstName -Value $firstName; #This line does not work #$person | Add-Member -MemberType CodeMethod -Name Walk -Value Walk; return $person; } $MyPerson = New-Person -firstName "JP"; $MyPerson; #This line does not work $MyPerson.Walk();
動作をカプセル化します。これは、オブジェクト内に関数を作成し、それらをプライベートとしてマークすることを意味します
[あった方がよい]。メソッドをオーバーライドする動作を継承して特殊化できるように、基本クラスを作成します。
[あった方がよい]。インターフェイスを作成して、PowerShell メソッドを分離して単体テストで考え始めることができるようにします (これを行うための Pester のようなツールがあることは知っていますが、OOP 機能に焦点を当てています)。
これまでに行ったことは、プロパティのみ (DTO) を持つオブジェクトを作成することですが、オブジェクトに動作を追加したいと思います
皆さんが私を正しい方向に向けてくれれば幸いです