I have a PowerShell script stored in a file. In Windows PowerShell, I run the script as
.\MergeDocuments.ps1 "1.docx" "2.docx" "merge.docx"
I want to call a script from C #. I am currently using Process.Start as follows, which works just fine:
Process.Start(POWERSHELL_PATH, string.Format("-File \"{0}\" {1} {2}", SCRIPT_PATH, string.Join(" ", filesToMerge), outputFilename));
I want to run it using the Pipeline
class, something like the code below, but I donβt know how to pass the arguments (keep in mind that I have no named arguments, I just use $ args)
// create Powershell runspace Runspace runspace = RunspaceFactory.CreateRunspace(); runspace.Open(); RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runspace); runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted"); // create a pipeline and feed it the script text (AddScript method) or use the filePath (Add method) Pipeline pipeline = runspace.CreatePipeline(); Command command = new Command(SCRIPT_PATH); command.Parameters.Add("", ""); // I don't have named paremeters pipeline.Commands.Add(command); pipeline.Invoke(); runspace.Close();
source share