wsmprovhost.exe在关闭WsManConnectionInfo

时间:2018-07-19 12:15:20

标签: c# powershell

我有一个类(我们称其为DbHostWindows),其中包含有关Windows服务器的各种内容。每当我想在服务器上远程执行某项操作时,都会创建一个实例。此类组成的一件事是WsManConnection-这是构造函数的一部分:     vWinRM =新的WsManConnection(vServerName);

public WsManConnection(string wsManHostName) {
    vWsManConnectionInfo = new WSManConnectionInfo(new Uri($"http://{wsManHostName}:5985/wsman")) {
        OpenTimeout = WsManDefaultTimeoutInMs,
        OperationTimeout = WsManDefaultTimeoutInMs,
        IdleTimeout = WsManIdleTimeoutInMs 
    };
    Init();
}

我注意到,每当运行DbHostWindows构造函数时,我都会在服务器上运行wsmprovhost.exe进程。     “ C:\ windows \ system32 \ wsmprovhost.exe-嵌入” 我还注意到,此过程的默认超时时间显然是24天左右。将IdleTimeout设置为60000(最小值)可将超时减少到一分钟。

我的问题是我希望在一分钟之前摆脱wsmprovhost.exe进程-实际上,一旦我处置了DbHostWindows对象并因此处置了WsManConnectionInfo,它就会立即消失。我知道在这一点上我将不再使用此连接。但是,我不知道该怎么做。

出于测试目的,我尝试在构造函数的末尾添加以下命令,以尝试尽快杀死它,并确保该连接未用于任何操作:

vWinRm.PowerShell.Stop();
vWinRm.PowerShell.Runspace.Disconnect();
vWinRm.PowerShell.Dispose();
vWinRm.Dispose();

似乎都没有影响wsmprovhost.exe进程。 IdleTimeout启动后,wsmprovhost.exe确实关闭。作为解决方法,我可以在服务器上提高MaxProcessesPerShell,但是我宁愿在处理DbHostWindows时关闭这些进程。

0 个答案:

没有答案