Reputation: 1418
I am writing an C# application which will need to execute Powershell scripts with command line arguments and retrieve the output (aka what I would expect to see in the output window of PowerShell ISE - including exception information)
I have found numerous code examples of how to accomplish this task using PowerShell V1 objects. These examples create runspaces, pipelines, etc. (ex Execute PowerShell Script from C# with Commandline Arguments)
I have seen a few scant references to a different way to do this using PowerShell V2. (the top answer here: Capturing Powershell output in C# after Pipeline.Invoke throws) Using V2 seems much simpler. No messing around with runspaces, piplines or any of that. Something like this:
PowerShell powerShell = PowerShell.Create();
powerShell.AddScript(script);
var results = powerShell.Invoke();
Are there any good working examples out there of using PowerShell V2 objects to execute scripts from within C# code? Is there any known good documentation of the PowerShell V2 (or even V3) objects and best practices on how to use them? Offical docs from Microsoft like there ought to be? A good book or site which breaks down the System.Management.Automation assembly piece by piece?
Upvotes: 9
Views: 21507
Reputation: 1418
Answering my own question here. It looks like the right approach would be for my application to function as a PowerShell Host
https://msdn.microsoft.com/en-us/library/ee706563(v=vs.85).aspx
Use of PowerShell V2 objects is defined here: http://msdn.microsoft.com/en-us/library/windows/desktop/system.management.automation.powershell(v=vs.85).aspx
Upvotes: 10