C#带WMIC命令

C#带WMIC命令,c#,wmic,C#,Wmic,我试图在C#上执行wmic命令并获得输出,但该函数只返回第一行和未运行的命令 代码: C#上的输出: 正在执行(Win32_ShadowCopy)->create() 仅显示第一行,命令不起作用 Cmd输出(预期) cmd上的shadowcopy是通过success创建的,用于将wmic重定向到需要添加/output:STDOUT到参数的控制台输出 当然,您需要以管理员身份运行C#应用程序 var psi = new ProcessStartInfo("wmic"); psi.Arguments

我试图在C#上执行wmic命令并获得输出,但该函数只返回第一行和未运行的命令

代码:

C#上的输出:

正在执行(Win32_ShadowCopy)->create()

仅显示第一行,命令不起作用

Cmd输出(预期)


cmd上的shadowcopy是通过success创建的,用于将wmic重定向到需要添加/output:STDOUT到参数的控制台输出

当然,您需要以管理员身份运行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();

这是对我有用的东西

System.Diagnostics.ProcessStartInfo usbDevicesInfo = new System.Diagnostics.ProcessStartInfo("wmic", "path CIM_USBDevice get Caption");
usbDevicesInfo.RedirectStandardOutput = true;
usbDevicesInfo.UseShellExecute = false;
usbDevicesInfo.CreateNoWindow = true;
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = usbDevicesInfo;
process.Start();
process.WaitForExit();
Console.WriteLine("ExitCode: " + process.ExitCode.ToString() + "\n");
result = process.StandardOutput.ReadToEnd();
Console.WriteLine(result);
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();
System.Diagnostics.ProcessStartInfo usbDevicesInfo = new System.Diagnostics.ProcessStartInfo("wmic", "path CIM_USBDevice get Caption");
usbDevicesInfo.RedirectStandardOutput = true;
usbDevicesInfo.UseShellExecute = false;
usbDevicesInfo.CreateNoWindow = true;
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo = usbDevicesInfo;
process.Start();
process.WaitForExit();
Console.WriteLine("ExitCode: " + process.ExitCode.ToString() + "\n");
result = process.StandardOutput.ReadToEnd();
Console.WriteLine(result);