2017-04-19 45 views
1

我想在C#上执行wmic命令并获取输出,但函数只返回第一行和未运行的命令。C#与WMIC命令

代码:

private static String wimc(String cmd) 
    { 
     var psi = new ProcessStartInfo("wmic"); 
     psi.Arguments = @"shadowcopy call create Volume='C:\'"; 
     psi.WindowStyle = ProcessWindowStyle.Hidden; 
     psi.UseShellExecute = false; 
     psi.RedirectStandardOutput = true; 
     var p = Process.Start(psi); 
     p.WaitForExit(); 
     String output = p.StandardOutput.ReadToEnd(); 


     return output; 
    } 

上C#输出:

执行(Win32_ShadowCopy) - >创建()

只显示第一线和命令不工作

命令输出(预计)

在CMD
Executing (Win32_ShadowCopy)->create() Method execution successful. Out Parameters: instance of __PARAMETERS { 
      ReturnValue = 0; 
      ShadowID = "{B2FDCFDE-7C48-4F96-9648-9A15DB89506C}"; 
}; 

影拷贝与sucess

回答

0

创造了重定向到WMIC你需要/输出增加的控制台输出:标准输出到你的论点。

当然,您将需要以管理员身份运行C#应用程序。

var psi = new ProcessStartInfo("wmic"); 
psi.Arguments = @"/OUTPUT:STDOUT shadowcopy call create Volume='C:\'"; 
psi.WindowStyle = ProcessWindowStyle.Hidden; 
psi.UseShellExecute = false; 
psi.RedirectStandardOutput = true; 
psi.RedirectStandardError = true; 
var p = Process.Start(psi); 
p.WaitForExit(); 
String output = p.StandardOutput.ReadToEnd(); 
String errOutput = p.StandardError.ReadToEnd();