How could call powershell script in c# with parameters
c#, powershell
Solution
A quick google search really gives you all you need. This one is from http://www.devx.com/tips/Tip/42716
You'll need the Reference `System.Management.Automation` then use
using System.Management.Automation;
using System.Management.Automation.Runspaces;
Create a runspace to host the PowerScript environment:
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
Using the runspace, create a new pipeline for your cmdlets:
Pipeline pipeline = runSpace.CreatePipeline();
Create Command objects to represent the cmdlet(s) you want to execute and add them to the pipeline. This example retrieves all the processes and then sorts them by their memory usage.
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);
The preceding code functions identically to the following PowerShell command line:
`PS > Get-Process | Sort-Object -Property VM`
Finally, execute the commands in the pipeline and do something with the output:
Collection output = pipeline.Invoke();
foreach (PSObject psObject in output)
{
Process process = (Process)psObject.BaseObject;
Console.WriteLine("Process name: " + process.ProcessName);
}
Problem
I am trying to invoke powershell script with parameters from c#. Is there any option to give just powershell script file along with parameters rather than giving whole powershell command as a string in c# code.