1

情况是:我必须使用 ManagementBaseObject 运行批处理文件并获取其返回值(例如,如果命令正确执行,则为 0,如果出现问题,则为 1)。我尝试使用“EXIT”命令设置错误级别代码,但无论我将什么作为退出代码,“returnValue”属性始终为 0。有没有办法让批处理文件影响该属性?
这是代码(而不是调用批处理文件,我只是执行一个简单的命令行以使其更易于在此处发布,但想法是相同的):

ManagementClass processClass =  new ManagementClass("Win32_Process");
try
{
    ManagementBaseObject inp = processClass.GetMethodParameters("Create");
    inp["CommandLine"] = @"cmd /c exit /B 1";
    ManagementBaseObject outp;
    outp = processClass.InvokeMethod("Create", inp, null);
    Console.WriteLine(outp["returnValue"]);
}
catch (Exception e)
{
    Console.WriteLine(e.Message);
}

...但输出始终为 0!我想看到的是 1,这是我作为退出代码输入的。有可能这样做吗?
我知道我“可以”使用 Process 类使其工作,但使用 ManagementBaseObject 是我能找到在远程机器上运行批处理文件的唯一方法。

提供一点上下文:
我有这个批处理文件位于远程机器上,我必须从我的本地机器上运行该文件。我目前正在使用类 ManagementScope 和 ConnectionOptions 连接到提供我的凭据的远程计算机。之后,我创建了一个与远程连接关联的 ManagementClass,ManagementPath 设置为“Win32_Process”。然后,我使用 ManagementBaseObject 运行批处理文件并获取其返回值。
如果有人知道任何其他方法可以做到这一点,请告诉我,我愿意接受建议。
谢谢!

4

0 回答 0