タイトルが少し混乱していることがわかりましたが、私はそれをフレーズするより良い方法を見つけられませんでした。すべての機能が別の機能に出力を送信する方法をお探しですか?
私は数十の機能を持つPowershellスクリプトを持っています。現在、出力をフォーマットするために、すべての関数にまったく同じコードがあります。スニペットは次のとおりです。
function function1() {
do something...
output code here
}
function function2() {
do something...
output code here
}
出力コードはまったく同じです。コード重複排除のファンであるため、私は新しい機能を追加するたびに、このテンプレートコードを適用する必要があるため、これは私を狂ってしまいます。 try/catchブロックにスクリプト全体を入れて出力したオブジェクトを投げてみましたが、動作させることができませんでしたが、これはすべての関数で同じthrow文でコーディングする必要があります。
私はこれらの機能をすべてこのスクリプトに入れて、自動的に出力を別の機能に送信することができますか、それとも私はこのままで生活しなければなりませんか?あなたは関数の本体を取得し、書式設定コードと新しいボディをassignesの機能を見ることができるように
function addOutputCode {
param($name)
$oldBody = (get-item function:$name).ScriptBlock
$newBody = {
param($computer)
$funcOutput = . $oldBody $computer
# some formatting
$funcOutput | % { 'FORMATTED: ' + $_ }
}.GetNewClosure()
Set-Item function:$name -value $newBody
}
:関数がパラメータを持っていない場合は
出力形式はどのようなものですか、どのように出力していますか?これらのオブジェクトはすべて同じタイプですか?おそらく、その型のオブジェクトのカスタム書式設定を実装するout- *またはwrite- *を使用するプロキシ関数ですか? – mjolinor
この関数は、いくつかの要素を持つ順序付けられたハッシュテーブルを出力しています。それらはすべて同じタイプです。 –
もしそれが他のスレッドに関連していたら、ハッシュテーブルがそのままテストからそのままテストに渡されるという考えがありました。それぞれのテストでもう少し追加されます。すべてのテストの終わりに、それをNew-TestResult関数にパイプし、ハッシュテーブルから構築されたオブジェクトを返します。 – mjolinor