Как я могу остановить службу Windows удаленных компьютеров, используя WMI / CimSession? - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать приложение, в котором я могу остановить и запустить определенные службы Windows на удаленном компьютере. Я использую Microsoft.Management.Infrastructure для удаленного подключения к WMI в C #. Прямо сейчас я могу получить службу, но как мне вызвать метод StopService или StartService, используя мой QueryInstance?

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 голосов
/ 16 января 2019

Благодаря комментарию Х.Г. Сандхагена, правильным способом является использование CimSession.InvokeMethod. См. Обновление в вопросе о том, как это выглядит.

...