3

C# のパラメーターを使用して powershell スクリプトを呼び出そうとしています。c# コードで powershell コマンド全体を文字列として指定するのではなく、powershell スクリプト ファイルだけをパラメータと共に指定するオプションはありますか。

4

2 に答える 2

8

Google で簡単に検索すると、本当に必要なものがすべて表示されます。これはhttp://www.devx.com/tips/Tip/42716からのものです

参照が必要になりSystem.Management.Automation 、使用します

using System.Management.Automation;
using System.Management.Automation.Runspaces;

PowerScript 環境をホストする実行空間を作成します。

Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();

実行空間を使用して、コマンドレット用の新しいパイプラインを作成します。

Pipeline pipeline = runSpace.CreatePipeline();

実行するコマンドレットを表す Command オブジェクトを作成し、それらをパイプラインに追加します。この例では、すべてのプロセスを取得し、メモリ使用量で並べ替えます。

Command getProcess = new Command("Get-Process");
Command sort = new Command("Sort-Object");
sort.Parameters.Add("Property", "VM"); 
pipeline.Commands.Add(getProcess);
pipeline.Commands.Add(sort);

上記のコードは、次の PowerShell コマンド ラインと同じように機能します。

PS > Get-Process | Sort-Object -Property VM

最後に、パイプラインでコマンドを実行し、出力に対して何かを行います。

Collection output = pipeline.Invoke();
foreach (PSObject psObject in output)
{
  Process process = (Process)psObject.BaseObject;
  Console.WriteLine("Process name: " + process.ProcessName);
}
于 2013-04-02T11:49:18.077 に答える