とりわけ、Exchange サーバーでいくつかのリモート Powershell コマンドレットを呼び出す C# サーバー アプリケーションを作成しています。これは私のアプリケーションのメイン アクティビティではありませんが、これらの関数はときどき呼び出されます。彼らがそうするとき、私は次のことをします:
- 構成から WSManConnectionInfo オブジェクトを初期化します。
- を使用して新しい実行空間を作成します
RunspaceFactory.CreateRunspace
。 - 実行空間を開きます。
PowerShell
実行空間を新しいオブジェクトに割り当てます。- 私のコマンドを呼び出します。
PowerShell
およびオブジェクトを破棄しRunspace
ます。
では、通話ごとにこれらすべての手順を実行する必要は本当にあるのでしょうか? 1 分ごと、1 時間ごと、または 1 日に 1 回でも呼び出しが行われると仮定すると、パフォーマンスについて心配する必要はありません。しかし、私はきちんと整頓された解決策を探しており、Runspace オブジェクトを一度作成し、それを何度も呼び出す方がより洗練されているのではないかと考えています。
Runspace オブジェクトを再利用して開いたままにしておくことに問題はありますか? オブジェクトを生きたままにしておく必要がありますが、必要なときはいつでも呼び出す必要がありますかClose()
? Open()
または、時間の経過とともに安定していることに依存しないでください(そして、ここでの「時間の経過とともに」はサーバーアプリの寿命であり、数か月になる可能性があります(またそうあるべきです).