L'Appel De PowerShell À Partir De C#

Je suis en utilisant System.Management.Automation DLL qui me permet d'appeler PowerShell au sein de mon application en C# comme suit:

PowerShell.Create().AddScript("Get-Process").Invoke();

Ce que j'essaie de faire est d'appeler PowerShell, mais l'offre, la liste d'entrée. Par exemple, dans:

1, 2, 3 | ForEach-Object { $_ * 2 }

Je suis en train d'essayer de fournir le côté gauche 1, 2, 3 lors de l'invocation:

//powershell is a PowerShell Object
powershell.Invoke(new [] { 1, 2, 3 });

Toutefois, cela ne fonctionne pas. Le solution je suis venu avec était à l'aide de ForEach-Object et puis passer le tableau en tant qu' InputObject avec le { $_ } comme le Process:

//create powershell object
var powershell = PowerShell.Create();

//input array 1, 2, 3
Command inputCmd = new Command("ForEach-Object");
inputCmd.Parameters.Add("InputObject", new [] { 1, 2, 3 });
inputCmd.Parameters.Add("Process", ScriptBlock.Create("$_"));
powershell.Commands.AddCommand(inputCmd);

//ForEach-Object { $_ * 2 }
Command outputCmd = new Command("ForEach-Object");
outputCmd.Parameters.Add("Process", ScriptBlock.Create("$_ * 2"));
powershell.Commands.AddCommand(outputCmd);

//invoke
var result = powershell.Invoke();

Bien que le ci-dessus est le code de travail est-il un moyen de l'utilisation de Invoke passant dans le tableau d'entrée parce que j'aurais tout de même que ce serait souhaitable pour l'appeler?

InformationsquelleAutor Tahir Hassan | 2012-11-06