C# 是否应关闭远程Powershell会话?

C# 是否应关闭远程Powershell会话?,c#,powershell,runspace,C#,Powershell,Runspace,我正在编写一个C#服务器应用程序,其中包括在Exchange服务器上调用多个远程Powershell cmdlet。这不是我的应用程序的主要活动,但这些函数偶尔会被调用。当他们这样做时,我会执行以下操作: 从我的配置初始化WSManConnectionInfo对象 使用RunspaceFactory.CreateRunspace创建新的运行空间 打开运行空间 将运行空间分配给新的PowerShell对象 调用我的命令 处置PowerShell和Runspace对象 现在,是否真的需要为每个电话都

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

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


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

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

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


    P.>正如我所说的,我会尽量保持整洁和整洁。没有理由不适当地清理自己。

    也不同意没有理由。更不用说在性能上,一个开放的认证会话听起来不太好。…AthoSfErle是很好的一点,我没有考虑过任何安全性。远程shell的风险,我不知道如何进一步评论,但至少要考虑一下。