【发布时间】:2011-01-18 02:10:18
【问题描述】:
我正在尝试在同一域中的远程计算机上执行脚本,并使用相同的用户帐户登录到两台计算机。请注意,该脚本也存储在另一台机器上。
代码
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 的新手,所以我不确定我做错了什么是否显而易见,尽管在许多情况下都会使用这种异常类型,并且无法找出实际问题是什么,因此我们将不胜感激。
【问题讨论】:
-
本地执行时是否有效?如果没有,那你就倒霉了。 WMI 中的很多东西都没有实现……Remoting 或 WCF 可能是更好的选择。
-
您的意思是脚本在本地运行时是否有效,或者当我将目标机器设置为我自己时是否有效?我想我的意思是,你问我是 WMI 代码有效还是脚本有效?
-
我从不使用“超酷短”语法,因为您可能无法正确控制流程属性。我知道,远程过程会起作用[尽管我的经验仅来自 w2k3]。正如“leppie”已经提到的那样,如果您尝试执行网络资源 [要执行的脚本的位置],它通常不起作用,因为这需要对您的“\\\\machine\\...”进行另一个身份验证步骤.此步骤的最低要求是使用 kerberos 身份验证!我从来没有那样做。您的身份验证和网络环境如何?
标签: c# .net .net-3.5 wmi remote-process