尝试在远程计算机上运行脚本时C# - WMI InvalidOperationException

时间:2011-01-18 02:10:18

标签: c# .net .net-3.5 wmi remote-process

我正在尝试在同一个域中的远程计算机上执行脚本,同一个用户帐户登录到这两台计算机上。请注意,脚本也存储在另一台计算机上。

代码

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的新手,所以我不确定我做错了什么是显而易见的,尽管在很多情况下都会使用这种异常类型,并且无法找出实际问题是什么,非常感谢帮助。

3 个答案:

答案 0 :(得分:3)

您的“\ root \ cimv2 \ Win32_Process”应为“\ root \ cimv2:Win32_Process”

请注意冒号,这是我使用的。祝你好运!

答案 1 :(得分:1)

我遇到了同样的问题。

result.InvokeMethod("GetOwner", ownerArgs)

问题是我试图在我使用以下WMI查询检索的对象上执行该操作。

SELECT ProcessId, ExecutablePath, CommandLine FROM Win32_Process

将其更改为SELECT * FROM Win32_Process修复它。

我可能也特别要求用户名和域名。

答案 2 :(得分:0)

事实证明,托管该进程的Windows服务未在有权在目标计算机上执行的帐户下运行。

我的错误!