我正在编写一个 C# 服务器应用程序,除其他外,它调用 Exchange 服务器上的多个远程 Powershell cmdlet。这不是我的应用程序的主要活动,但偶尔会调用这些函数。当他们这样做时,我会执行以下操作:
- 从我的配置中初始化 WSManConnectionInfo 对象。
- 使用 . 创建一个新的运行空间
RunspaceFactory.CreateRunspace
。 - 打开运行空间。
- 将运行空间分配给一个新
PowerShell
对象。 - 调用我的命令。
- 处置
PowerShell
和Runspace
对象。
现在,真的需要为每次通话都完成所有这些步骤吗?假设可能每分钟、每小时甚至每天一次打一个电话,我并不担心性能。但是我正在寻找一个整洁的解决方案,并且想知道创建一个 Runspace 对象并一次又一次地调用它是否会更优雅。
重用 Runspace 对象并使其保持打开状态是否存在问题?Close()
我是否应该让对象保持活动状态,但Open()
在需要时调用它?或者我不应该依赖它随着时间的推移保持稳定(这里的“随着时间”是服务器应用程序的生命周期,可能(并且应该)是几个月。