如何使用WMI / CimSession停止远程计算机Windows服务?

时间:2019-01-16 18:40:43

标签: c# windows-services wmi rpc

我正在尝试创建一个应用程序,可以在其中停止和启动远程计算机上的特定Windows服务。我正在使用Microsoft.Management.Infrastructure在C#中远程连接到WMI。现在,我可以检索服务,但是如何使用QueryInstance调用StopService或StartService方法?

CimCredential cimCredential = new CimCredential(PasswordAuthenticationMechanism.Default, ".", "<userName>", secureString);
        WSManSessionOptions wSManSessionOptions = new WSManSessionOptions();
        wSManSessionOptions.AddDestinationCredentials(cimCredential);
        CimSession cimSession = CimSession.Create("<IPAddress>", wSManSessionOptions);

        IEnumerable < CimInstance> queryInstance = cimSession.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Service WHERE Name = '<ServiceName>'");

更新:CimSession.InvokeMethod是完成的方式。 停止和启动的代码如下

List<CimInstance> serviceList = queryInstance.ToList();
CimInstance service = serviceList[0];
cimSession.InvokeMethod(service, "StopService", null);
Thread.Sleep(15000);
cimSession.InvokeMethod(service, "StartService", null);

1 个答案:

答案 0 :(得分:0)

感谢桑德哈根(H.G. Sandhagen)的评论,正确的方法是使用CimSession.InvokeMethod。看起来有问题,请查看有问题的更新。