2

とりわけ、Exchange サーバーでいくつかのリモート Powershell コマンドレットを呼び出す C# サーバー アプリケーションを作成しています。これは私のアプリケーションのメイン アクティビティではありませんが、これらの関数はときどき呼び出されます。彼らがそうするとき、私は次のことをします:

  1. 構成から WSManConnectionInfo オブジェクトを初期化します。
  2. を使用して新しい実行空間を作成しますRunspaceFactory.CreateRunspace
  3. 実行空間を開きます。
  4. PowerShell実行空間を新しいオブジェクトに割り当てます。
  5. 私のコマンドを呼び出します。
  6. PowerShellおよびオブジェクトを破棄しRunspaceます。

では、通話ごとにこれらすべての手順を実行する必要は本当にあるのでしょうか? 1 分ごと、1 時間ごと、または 1 日に 1 回でも呼び出しが行われると仮定すると、パフォーマンスについて心配する必要はありません。しかし、私はきちんと整頓された解決策を探しており、Runspace オブジェクトを一度作成し、それを何度も呼び出す方がより洗練されているのではないかと考えています。

Runspace オブジェクトを再利用して開いたままにしておくことに問題はありますか? オブジェクトを生きたままにしておく必要がありますが、必要なときはいつでも呼び出す必要がありますかClose()? Open()または、時間の経過とともに安定していることに依存しないでください(そして、ここでの「時間の経過とともに」はサーバーアプリの寿命であり、数か月になる可能性があります(またそうあるべきです).

4

1 に答える 1

1

リモート セッションを開いたままにし、再度使用するつもりがない場合、問題が発生する可能性があることに気付きました。通常、サーバー上で一度に開くことができるリモート シェルの数には制限があります。自分で後片付けをしないと、簡単にその制限に達してしまい、別のリモート シェルを開くことができなくなります。

また、リモート シェルの最大サイズ (デフォルトは 50MB ですが、増やすことができます。インストーラーを実行するときは通常、これを大幅に増やす必要があります) によっては、不必要にメモリを消費する可能性があることにも言及します。あなたはパフォーマンスについて心配していないと述べたので、これはあなたにとって問題ではないかもしれません.

そうは言っても、私はできるだけきちんと整理整頓しようとします。自分の後片付けをしない理由はありません。

于 2013-10-16T13:34:44.253 に答える