c# - Capture standart output of powershell script executed from .NET application -


let's assume have simple powershell script myscript.ps1, writes standart output:

get-location 

now want execute script .net application. ended next code:

var process = new process         {             startinfo = {                 filename = "powershell.exe",                 arguments = "-file \"myscript.ps1\"",                 workingdirectory = path.combine(environment.currentdirectory, "run"),                 useshellexecute = false,                 redirectstandardoutput = true             }         };  process.outputdatareceived += (sender, args) => console.writeline(args.data); process.start(); process.beginoutputreadline(); process.waitforexit(); 

and works, think should more elegant way using system.management.automation assembly:

using (powershell shell = powershell.create()) {     shell.commands.addscript("myscript.ps1");     var r = shell.invoke();     console.writeline(r); } 

but invoke returns collection of `psobject, , can't find way access stdout

on "myscript.ps1" put @ end out-string


Comments