我正在编写一个C#服务器应用程序,它可以在Exchange服务器上调用多个远程Powershell cmdlet。这不是我应用程序的主要活动,但偶尔会调用这些函数。当他们这样做时,我执行以下操作:远程PowerShell会话应该关闭吗?
- 从我的配置中初始化WSManConnectionInfo对象。
- 使用
RunspaceFactory.CreateRunspace
创建新的运行空间。 - 打开运行空间。
- 将运行空间分配给新的
PowerShell
对象。 - 调用我的命令。
- 配置
PowerShell
和Runspace
对象。
现在,是否真的需要为每次调用完成所有这些步骤?假设每分钟,每小时甚至每天都可以拨打一个电话,我并不担心业绩。但是我正在寻找一个整洁的解决方案,并且想知道是否创建一个Runspace对象并且一次又一次地调用它可能会更加优雅。
重复使用Runspace对象并保持它打开是否存在问题?我是否应该保持这个对象的存在,但是每当我需要的时候都可以打电话给Close()
和Open()
?或者我应该不依赖于它保持稳定一段时间(与“随着时间的推移”这里是服务器应用程序的生命周期,这可能(和应该)是几个月。
同意没有理由也不是。更不用说在性能之上,开放的身份验证会话听起来并不像是一件好事...... –
@AthomSfere非常好的一点,我没有想过考虑远程shell有任何安全风险,而我对进一步发表的评论不够了解,但至少应该考虑一些事情。 – tnw