2013-10-16 109 views
2

我正在編寫一個C#服務器應用程序,它可以在Exchange服務器上調用多個遠程Powershell cmdlet。這不是我應用程序的主要活動,但偶爾會調用這些函數。當他們這樣做時,我執行以下操作:遠程PowerShell會話應該關閉嗎?

  1. 從我的配置中初始化WSManConnectionInfo對象。
  2. 使用RunspaceFactory.CreateRunspace創建新的運行空間。
  3. 打開運行空間。
  4. 將運行空間分配給新的PowerShell對象。
  5. 調用我的命令。
  6. 配置PowerShellRunspace對象。

現在,是否真的需要爲每次調用完成所有這些步驟?假設每分鐘,每小時甚至每天都可以撥打一個電話,我並不擔心業績。但是我正在尋找一個整潔的解決方案,並且想知道是否創建一個Runspace對象並且一次又一次地調用它可能會更加優雅。

重複使用Runspace對象並保持它打開是否存在問題?我是否應該保持這個對象的存在,但是每當我需要的時候都可以打電話給Close()Open()?或者我應該不依賴於它保持穩定一段時間(與「隨着時間的推移」這裏是服務器應用程序的生命週期,這可能(和應該)是幾個月。

回答

1

我注意到,遠程會話,如果你離開他們打開並且不打算再次使用它們會導致問題,一次可以在服務器上打開的遠程shell的數量通常是有限的,如果你不打算自己清理,你可以打開這個限制很容易,你將無法打開另一個遠程shell。

我還會提到,取決於遠程shell的最大大小(默認是50MB,但可以增加,當我運行安裝程序時我通常需要大幅增加),你可能會吃掉我不必要的。你提到你並不擔心表現,儘管這對你來說可能不是問題。

這就是說,我會盡量保持乾淨整潔。沒有理由不正確清理自己。

+0

同意沒有理由也不是。更不用說在性能之上,開放的身份驗證會話聽起來並不像是一件好事...... –

+0

@AthomSfere非常好的一點,我沒有想過考慮遠程shell有任何安全風險,而我對進一步發表的評論不夠了解,但至少應該考慮一些事情。 – tnw