Tengo un script de PowerShell almacenado en un archivo. En Windows PowerShell, ejecuto el script como
.\MergeDocuments.ps1 "1.docx" "2.docx" "merge.docx"
Invocar secuencia de comandos de PowerShell con argumentos de C#
Quiero llamar al script desde C#. Actualmente estoy usando Process.Start de la siguiente manera, que funciona a la perfección:
Process.Start(POWERSHELL_PATH, string.Format("-File \"{0}\" {1} {2}", SCRIPT_PATH, string.Join(" ", filesToMerge), outputFilename));
que desea que se ejecute utilizando Pipeline
clase, algo así como el código de abajo, pero no sé cómo pasar los argumentos (tenga en cuenta que no tengo argumentos con nombre, sólo estoy usando $ 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();
cualquier solución final con código fuente completo? – Kiquenet
@Kiquenet Agregó el código. –