为什么我的WMI InvokeMethod调用返回0(成功),但未能远程做任何事情

本文关键字:何事情 程做任 成功 InvokeMethod WMI 我的 调用 返回 为什么 | 更新日期: 2023-09-27 18:09:00

我有一个非常简单的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用户具有完全的访问权限。

为什么我的WMI InvokeMethod调用返回0(成功),但未能远程做任何事情

看来我需要设置工作目录以便执行工作。我创建了inParams并改变了我的Invoke来使用它们:

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);