2017-04-19 15 views
1

C#でwmicコマンドを実行して出力を取得しようとしていますが、関数は最初の行と実行されていないコマンドだけを返します。WMICコマンドを使用したC#

コード:C#の上

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

出力:

(Win32_ShadowCopy)を実行 - >(作成)

は、最初の行のみを表示し、

を動作していないコマンドCmd出力(期待)

あなたの引数をSTDOUT:CMDに
Executing (Win32_ShadowCopy)->create() Method execution successful. Out Parameters: instance of __PARAMETERS { 
      ReturnValue = 0; 
      ShadowID = "{B2FDCFDE-7C48-4F96-9648-9A15DB89506C}"; 
}; 

シャドウコピーは、あなたは/ OUTPUTを追加する必要があり、コンソール出力にWMICリダイレクトするための成功事例の

答えて

0

で作成されました。

もちろん、管理者として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(); 
関連する問題