2016-08-24 6 views
0

私はC#コンソールプログラムを持っていますが、PowerShellコマンドを実行しませんが、PowerShell Runspaceで実行しようとするコマンドに関係なく、cmdlet見つかりました。C#で基本Powershellコマンドを実行しています。エラーが見つかりません。

static void Main(string[] args) 
{ 
    try 
    { 
     using (Runspace runspace = RunspaceFactory.CreateRunspace()) 
     { 
      runspace.Open(); 
      PowerShell ps = PowerShell.Create(); 
      ps.Runspace = runspace; 
      ps.AddCommand("(Get-Date).AddDays(1)"); 
      var result = ps.Invoke(); 

      Console.WriteLine(result); 
     } 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine("Error: " + ex.ToString()); 
    } 
} 

私はこのコマンドをpowershellコマンドラインで入力することができます。これは完全にうまく動作します。私はそれを実行するためにモジュールを追加する必要はありません。私は何が欠けていますか?

答えて

4

AddCommandを使用すると、コマンドはGet-Dateとなり、期待通りです。例えば

ps.AddCommand("Get-Date").AddParameter("Format", "u").Invoke(); 

https://msdn.microsoft.com/en-us/library/dd182430(v=vs.85).aspx

スクリプトで、(それが1ではないので)簡単にAddCommandに適合しないあなたが持っている、代わりにAddScriptを試してみてください参照してください。

ps.AddScript("(Get-Date).AddDays(1)").Invoke(); 
+0

私が望んでいた場合の対処その結果を変数に格納するには? –

+0

あなたのクラスにそれを保管していますか? Invoke()からの戻り値を元のものと同じように割り当てることができます。例のために少し単純化しました。 –

関連する問題