C# 是否应关闭远程Powershell会话?
我正在编写一个C#服务器应用程序,其中包括在Exchange服务器上调用多个远程Powershell cmdlet。这不是我的应用程序的主要活动,但这些函数偶尔会被调用。当他们这样做时,我会执行以下操作:C# 是否应关闭远程Powershell会话?,c#,powershell,runspace,C#,Powershell,Runspace,我正在编写一个C#服务器应用程序,其中包括在Exchange服务器上调用多个远程Powershell cmdlet。这不是我的应用程序的主要活动,但这些函数偶尔会被调用。当他们这样做时,我会执行以下操作: 从我的配置初始化WSManConnectionInfo对象 使用RunspaceFactory.CreateRunspace创建新的运行空间 打开运行空间 将运行空间分配给新的PowerShell对象 调用我的命令 处置PowerShell和Runspace对象 现在,是否真的需要为每个电话都
RunspaceFactory.CreateRunspace
创建新的运行空间PowerShell
对象PowerShell
和Runspace
对象重用运行空间对象并保持其打开是否存在问题?我应该让对象保持活动状态,但在需要时对其调用
Close()
和Open()
?或者我不应该依赖它在一段时间内保持稳定(这里的“随时间”是服务器应用程序的生命周期,它可以(也应该)保持稳定)需要几个月。我注意到,如果远程会话保持打开状态,并且不打算再次使用它们,则可能会导致问题。服务器上一次可以打开的远程shell的数量通常是有限制的。如果您不费心清理,您可以很容易地达到该限制,并且无法再次打开呃远程外壳
我还要提到的是,根据远程shell的最大大小(默认值为50MB,但可以增加,当我运行安装程序时,我通常需要显著增加),您可能会不必要地消耗内存。您提到您并不担心性能,所以这对您来说可能不是问题
P.>正如我所说的,我会尽量保持整洁和整洁。没有理由不适当地清理自己。也不同意没有理由。更不用说在性能上,一个开放的认证会话听起来不太好。…AthoSfErle是很好的一点,我没有考虑过任何安全性。远程shell的风险,我不知道如何进一步评论,但至少要考虑一下。