2011-01-18 3 views
0

Я пытаюсь выполнить сценарий на удаленном компьютере в том же домене, при этом одна и та же учетная запись пользователя входит в систему на обеих машинах. Обратите внимание, что скрипт также хранится на еще одном компьютере.C# - WMI InvalidOperationException при попытке запустить скрипт на удаленном компьютере

Код

string prop = propertyName 
object[] cmd = { String.Format("cscript \\\\machine\\script.wsf", envId, application) }; 
ManagementClass mc = new ManagementClass("\\\\" + prop + "\\root\\cimv2\\Win32_Process"); 

mc.InvokeMethod("Create", cmd); 

Исключение

[InvalidOperationException: Operation is not valid due to the current state of the object.] 
    System.Management.ManagementObject.InvokeMethod(String methodName, Object[] args) +388806 

Заключение

Я новичок в использовании WMI, так что я не уверен, что я делать что-то неправильно, хотя оглядеться вокруг этого типа исключения - это мы во многих ситуациях, и у меня возникли проблемы с выяснением, какова актуальная проблема, поэтому помощь будет принята с большой благодарностью.

+0

Работает ли он при его локальном запуске? Если нет, вам не повезло. Многие вещи в WMI просто не реализованы ... Remoting или WCF могут быть лучшим вариантом. – leppie

+0

Вы имеете в виду, что скрипт работает при запуске локально или работает, когда я устанавливаю целевую машину как себя? Я предполагаю, что я имею в виду, вы спрашиваете меня, работает ли код WMI или работает скрипт? – damienc88

+0

Я никогда не использую синтаксис «ultra-cool-short», потому что у вас, вероятно, не будет правильного уровня контроля над свойствами процесса. Я знаю, что удаленный процесс будет работать [хотя мой опыт связан только с w2k3]. Как уже упоминалось, «leppie» обычно не работает, если вы пытаетесь отключить сетевые ресурсы [местоположение вашего сценария для excute], потому что для этого потребуется другой шаг аутентификации на ваш «\\\\ machine \\ ...» , Минимальным требованием для этого stept было бы использование kerberos auth! Я никогда этого не делал. Какова ваша аутентификация и сетевой пейзаж? – mabra

ответ

0

Оказалось, что служба Windows, обслуживающая этот процесс, не запускалась под учетной записью, которая имела разрешение на выполнение на целевой машине.

Моя ошибка!

3

Ваш "\ корень \ cimv2 \ Win32_Process" должно быть "\ корень \ cimv2: Win32_Process"

Примечание двоеточие, это то, что я использую. Удачи!

1

У меня была та же проблема.

result.InvokeMethod("GetOwner", ownerArgs)

Проблема заключалась в том, что я пытался выполнить, что на объекте я извлеченной с помощью следующего запроса WMI.

SELECT ProcessId, ExecutablePath, CommandLine FROM Win32_Process

Изменение его SELECT * FROM Win32_Process зафиксировал его.

Возможно, я мог бы также запросить имя пользователя и домен.

Смежные вопросы