我正在編寫一個C#服務器應用程序,它可以在Exchange服務器上調用多個遠程Powershell cmdlet。這不是我應用程序的主要活動,但偶爾會調用這些函數。當他們這樣做時,我執行以下操作:遠程PowerShell會話應該關閉嗎?
- 從我的配置中初始化WSManConnectionInfo對象。
- 使用
RunspaceFactory.CreateRunspace
創建新的運行空間。 - 打開運行空間。
- 將運行空間分配給新的
PowerShell
對象。 - 調用我的命令。
- 配置
PowerShell
和Runspace
對象。
現在,是否真的需要爲每次調用完成所有這些步驟?假設每分鐘,每小時甚至每天都可以撥打一個電話,我並不擔心業績。但是我正在尋找一個整潔的解決方案,並且想知道是否創建一個Runspace對象並且一次又一次地調用它可能會更加優雅。
重複使用Runspace對象並保持它打開是否存在問題?我是否應該保持這個對象的存在,但是每當我需要的時候都可以打電話給Close()
和Open()
?或者我應該不依賴於它保持穩定一段時間(與「隨着時間的推移」這裏是服務器應用程序的生命週期,這可能(和應該)是幾個月。
同意沒有理由也不是。更不用說在性能之上,開放的身份驗證會話聽起來並不像是一件好事...... –
@AthomSfere非常好的一點,我沒有想過考慮遠程shell有任何安全風險,而我對進一步發表的評論不夠了解,但至少應該考慮一些事情。 – tnw