2

我想使用 C# 在远程计算机上的命令提示符下运行命令。根据此链接如何在远程计算机中执行命令?,我正在尝试使用以下代码执行此操作:

public static void RunRemoteCommand(string command, string RemoteMachineName)
{
    ManagementScope WMIscope = new ManagementScope(
        String.Format("\\\\{0}\\root\\cimv2", RemoteMachineName));
    WMIscope.Connect();
    ManagementClass WMIprocess = new ManagementClass(
        WMIscope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
    object[] process = { command };
    object result = WMIprocess.InvokeMethod("Create", process);
    Log.Comment("Creation of process returned: " + result);
}

这将返回退出代码 0 并且不会引发任何错误,但不会执行任何操作。请帮忙。

4

3 回答 3

1

希望这会有所帮助

http://www.petri.co.il/command-line-wmi-part-2.htm

查看“备用凭据”部分。我相信你可以自己做一些小修改。

于 2013-07-25T01:45:54.173 回答
0

如果你愿意尝试一下,psexec非常适合这种事情。

于 2013-06-14T00:13:27.213 回答
0

我知道这篇文章很旧,但对于其他遇到此页面和完整性的人来说:RRUZ 的评论是正确的,但为了在远程机器上运行,您可能还需要一件事,即凭据。为此,您需要添加连接选项:

public static void RunRemoteCommand(string command, string RemoteMachineName, 
                                    string username,string password)
{


            var connection = new ConnectionOptions();
            connection.Username = username;
            connection.Password = password;


    ManagementScope WMIscope = new ManagementScope(
        String.Format("\\\\{0}\\root\\cimv2", RemoteMachineName), connection);
    WMIscope.Connect();
    ManagementClass WMIprocess = new ManagementClass(
        WMIscope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
    object[] process = { command };
    object result = WMIprocess.InvokeMethod("Create", process);
    Log.Comment("Creation of process returned: " + result);
}
于 2016-11-08T22:26:49.080 回答