2

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

  1. 从我的配置中初始化 WSManConnectionInfo 对象。
  2. 使用 . 创建一个新的运行空间RunspaceFactory.CreateRunspace
  3. 打开运行空间。
  4. 将运行空间分配给一个新PowerShell对象。
  5. 调用我的命令。
  6. 处置PowerShellRunspace对象。

现在,真的需要为每次通话都完成所有这些步骤吗?假设可能每分钟、每小时甚至每天一次打一个电话,我并不担心性能。但是我正在寻找一个整洁的解决方案,并且想知道创建一个 Runspace 对象并一次又一次地调用它是否会更优雅。

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

4

1 回答 1

1

我注意到远程会话,如果您将它们保持打开状态并且不打算再次使用它们,可能会导致问题。一次可以在服务器上打开的远程 shell 的数量通常是有限制的。如果您自己不费心清理,您可以很容易地达到该限制,并且您将无法打开另一个远程外壳。

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

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

于 2013-10-16T13:34:44.253 回答