我正在尝试在同一个域中的远程计算机上执行脚本,同一个用户帐户登录到这两台计算机上。请注意,脚本也存储在另一台计算机上。
代码
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 :(得分: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服务未在有权在目标计算机上执行的帐户下运行。
我的错误!