2009-03-03 6 views
1

早期バインディングを使用して.NETメソッドをPowerShellから呼び出すことは可能ですか?PowerShell:.NETメソッドのパフォーマンス

私はprocess {...}で単一の.NETメソッドを呼び出すパイプラインスクリプトを持っています。 PowerShellはリフレクションを介してこのメ​​ソッドを呼び出します。現在はInvoke(メソッド自体ではなく、リフレクションコールのみ)が合計実行時間の70%を占めます。

この方法は常に同じです。したがって、PowerShellにリフレクションを使用しないように頼むことをお勧めします。

答えて

3

私は早くPowerShellでバインドされているメソッド呼び出しの型のみを信じ、あるいは少なくとも、早けれ動的言語で可能であるとしてバインドは、次のよう

  1. コマンドレットです。
  2. 静的メソッド

私は#2程度としてはよく分かりません。私は、彼らは依然として根本的な方法を得るために反射を使用しなければならないと信じています。

ここではCmdLetsが良い選択です。その場合、実際の呼び出しは早期にバインドされますが、引き続きパラメータを変換処理する必要があります。メソッドコールをCmdLetに移動し、それがあなたを助けるかどうかを調べてみてください。

+0

答えをありがとう。問題は、私がCmdLetに行くと、私はC#プロジェクトを作成しなければならないことです。この場合、タスク全体に対してC#コンソールアプリケーションを作成する方が簡単です。 そして私は単一の小さなスクリプトを得ることを望んでいました(ちょうどcsvファイルのすべてのエントリのdll APIからメソッドを呼び出してください)。 –

+0

しばらく待ってから、回避策がなければ回答を受け入れます。 –

関連する問題