我正在编写一个C#服务器应用程序,除其他外,它还调用Exchange服务器上的几个远程Powershell cmdlet。这不是我的应用程序的主要活动,但偶尔会调用这些函数。当他们这样做时,我会做以下事情:
RunspaceFactory.CreateRunspace
创建新的运行空间。PowerShell
对象。PowerShell
和Runspace
个对象。现在,是否真的需要为每次通话完成所有这些步骤?假设每分钟,每小时,甚至每天一次呼叫,我不担心性能。但我正在寻找一个干净整洁的解决方案,并想知道是否一次创建一个Runspace对象并一次又一次地调用它可能会更优雅。
重用Runspace对象并保持打开是否有问题?我应该保持对象存活,但是只要我需要,就可以在其上调用Close()
和Open()
吗?或者我不应该依赖它随着时间的推移保持稳定(并且“随着时间的推移”这里是服务器应用程序的生命周期,可能(并且应该)是几个月。
答案 0 :(得分:1)
我注意到远程会话,如果你让它们打开并且不打算再次使用它们会导致问题。通常可以在服务器上同时打开的远程shell数量有限制。如果你不打算自己清理,你可以很容易地达到这个限制,你将无法打开另一个远程shell。
我还要提到,根据远程shell的最大大小(默认值为50MB,但可以增加,当我运行安装程序时,我通常需要大幅增加)你可能会不必要地占用内存。你提到你并不担心性能,所以这对你来说可能不是问题。
话虽如此,我会尽量保持整洁。没有理由不妥善清理自己。