2011-11-09 2 views
1

に私は、次のC#コード内_Get-User -Identity "John Doe" | FL_コマンドを実行しようとしています。は、PowerShellコマンドを実行します(-Identity「ジョン・ドウ」ユーザーを取得| FL)をC#の

 PowerShell powershell = PowerShell.Create(); 
     powershell.AddCommand("get-user"); 
     powershell.AddParameter("Identity", UserName.Text); 
     try 
     { 
      runspace.Open(); 
      powershell.Runspace = runspace; 
      Collection<PSObject> results = powershell.Invoke(); 

      var builder = new StringBuilder(); 
      foreach (var psObject in results) 
      { 
       builder.AppendLine(psObject.ToString() + "\r\n"); 
      } 
      ResultBox.Text = Server.HtmlEncode(builder.ToString()); 
     } 

ここで、_FL_コマンドを追加しますか?

+1

「結果」を「FL」(別のPowershellコマンド)に渡すことはありませんか?あるいは、完全なコマンド文字列を使用できますか? –

答えて

-1

Iを使用して、あなたが何をしたいのかわかりませんたくさんの検索をしました。 "WriteWhatYouWantToDo"ではなく、通常のpowershellスクリプトを変更することができます。

Runspace runspace = RunspaceFactory.CreateRunspace(); 
runspace.Open(); 
RunspaceInvoke invo = new RunspaceInvoke(runspace); 
invo.Invoke("Set-ExecutionPolicy Unrestricted"); 
Pipeline pipeline = runspace.CreatePipeline(); 

Command command = new Command("get-module -listAvailable | import-module\n" + WriteWhatYouWantToDo); 

pipeline.Commands.Add(command); 
pipeline.Commands.Add("Out-String"); 
try 
{ 
Collection<PSObject> results = pipeline.Invoke(); 
runspace.Close(); 
StringBuilder stringBuilder = new StringBuilder(); 
foreach (PSObject obj in results) 
{ 
stringBuilder.AppendLine(obj.ToString()); 
} 

string result1 = stringBuilder.ToString(); 
string result = result1.Substring(0, 250); //define global scope 
} 
catch (Exception ex) 
{ 

} 
2

各コマンドを追加すると、それがパイプラインに追加されます。だから、あなたがformat-listを行いたい場合は、パイプラインにそれを追加することができます。

powershell.AddCommand("get-user"); 
    powershell.AddParameter("Identity", UserName.Text); 
    powershell.AddCommand("format-list");' 
    //powershell.AddCommand("out-string"); 

しかし、そのようなことは、C#で行うことができるように私はresults

+1

私はそれがうまくいくとは思わないが、それは近い。私はこれらのコマンドにもう一つ追加します: 'powershell.AddCommand(" Out-String ");'。コマンドレット 'format-list'はフォーマットされたテキストを返さず、実際の出力でフォーマットするためのオブジェクトを返します。この出力をトリガする必要があります。 –

+0

@RomanKuzmin - そうですが、それで、なぜ私はあなたが最初にOPが必要なのか、最後の行で質問します。 – manojlds

関連する問題