远程Powershell会议应该关闭吗?

时间:2013-10-16 13:24:00

标签: c# powershell runspace

我正在编写一个C#服务器应用程序,除其他外,它还调用Exchange服务器上的几个远程Powershell cmdlet。这不是我的应用程序的主要活动,但偶尔会调用这些函数。当他们这样做时,我会做以下事情:

  1. 从我的配置初始化WSManConnectionInfo对象。
  2. 使用RunspaceFactory.CreateRunspace创建新的运行空间。
  3. 打开Runspace。
  4. 将运行空间分配给新的PowerShell对象。
  5. 调用我的命令。
  6. 处理PowerShellRunspace个对象。
  7. 现在,是否真的需要为每次通话完成所有这些步骤?假设每分钟,每小时,甚至每天一次呼叫,我不担心性能。但我正在寻找一个干净整洁的解决方案,并想知道是否一次创建一个Runspace对象并一次又一次地调用它可能会更优雅。

    重用Runspace对象并保持打开是否有问题?我应该保持对象存活,但是只要我需要,就可以在其上调用Close()Open()吗?或者我不应该依赖它随着时间的推移保持稳定(并且“随着时间的推移”这里是服务器应用程序的生命周期,可能(并且应该)是几个月。

1 个答案:

答案 0 :(得分:1)

我注意到远程会话,如果你让它们打开并且不打算再次使用它们会导致问题。通常可以在服务器上同时打开的远程shell数量有限制。如果你不打算自己清理,你可以很容易地达到这个限制,你将无法打开另一个远程shell。

我还要提到,根据远程shell的最大大小(默认值为50MB,但可以增加,当我运行安装程序时,我通常需要大幅增加)你可能会不必要地占用内存。你提到你并不担心性能,所以这对你来说可能不是问题。

话虽如此,我会尽量保持整洁。没有理由不妥善清理自己。