C# 为什么我的WMI InvokeMethod调用返回0(成功),但无法远程执行任何操作?

C# 为什么我的WMI InvokeMethod调用返回0(成功),但无法远程执行任何操作?,c#,wmi,win32-process,C#,Wmi,Win32 Process,我有一个非常简单的WMI方法,可以连接到远程服务器以启动批处理文件 此执行的返回代码为0,告诉我它成功了。如果我更改批处理文件的路径,它将返回9,以便我知道它正在查找命令文件 问题是,当我查看服务器时,我可以看到什么都没有发生。这个批处理文件要做的第一件事是从驱动器中删除GIT repo 我的代码是: public object[] ProcessToRun; public void StartBuild() { ProcessToRun = BuildServ

我有一个非常简单的WMI方法,可以连接到远程服务器以启动批处理文件

此执行的返回代码为0,告诉我它成功了。如果我更改批处理文件的路径,它将返回9,以便我知道它正在查找命令文件

问题是,当我查看服务器时,我可以看到什么都没有发生。这个批处理文件要做的第一件事是从驱动器中删除GIT repo

我的代码是:

public object[] ProcessToRun;

    public void StartBuild()
    {
        ProcessToRun = BuildServerInfo.SelectedBranch == BuildServerBranch.Branch.Development ? new object[] { "c:\\src\\Build\\Batch1_Development.cmd" } : new object[] { "c:\\src\\Build\\Batch2_Release_Candidate.cmd" };
        var connection = new ConnectionOptions();

        connection.Impersonation = ImpersonationLevel.Impersonate;
        connection.Authentication = AuthenticationLevel.Packet;
        connection.EnablePrivileges = true;
        connection.Timeout = new TimeSpan(0,0,15);

        var mp = new ManagementPath("\\\\" + BuildServerInfo.BuildServer + "\\root" + "\\cimv2:Win32_LogicalDisk.DeviceID=\"C:\"");
        var ms = new ManagementScope(mp, connection);

        var mprocess = new ManagementClass(ms, new ManagementPath("Win32_Process"), new ObjectGetOptions());
        var results = mprocess.InvokeMethod("Create", ProcessToRun);
    }
这是代码的问题,还是我需要对我的服务器做些什么?服务器是Windows 2008 R2

谢谢


编辑:我的帐户具有完全管理员权限,CIMV2\Security下的WMI用户具有完全访问权限。

似乎我需要设置工作目录,以便执行正常。我创建了inParams并更改了我的调用以将其用作:

var inParams = mprocess.GetMethodParameters("Create");
        inParams["CommandLine"] = @"c:\src\Build\Batch1_Development.cmd";
        inParams["CurrentDirectory"] = @"c:\src\Build";

        var outParams = mprocess.InvokeMethod("Create", inParams, null);

看来我需要设置工作目录,以便执行正常。我创建了inParams并更改了我的调用以将其用作:

var inParams = mprocess.GetMethodParameters("Create");
        inParams["CommandLine"] = @"c:\src\Build\Batch1_Development.cmd";
        inParams["CurrentDirectory"] = @"c:\src\Build";

        var outParams = mprocess.InvokeMethod("Create", inParams, null);