I attempting to add some fairly limited PowerShell support in my application: I want the ability to periodically run a user-defined PowerShell script and show any output and (eventually) be able to handle progress notification and user-prompt requests. I *don't* need command-line-style interactive support, or (I think) remote access or the ability to run multiple simultaneous scripts, unless the user script does that itself from within the shell I host. I'll eventually want to run the script asynchronously or on a background thread, and probably seed the shell with some initial variables and *maybe* a cmdlet but that's as "fancy" as this feature is likely to get.

I've been reading the [MSDN documentation about writing host application code](https://learn.microsoft.com/en-us/powershell/developer/hosting/windows-powershell-host-quickstart), but while it happily explains *how* to create a `PowerShell` object, or `Runspace`, or `RunspacePool`, or `Pipeline`, there's no indication about *why* one would choose any of these approaches over another.

I *think* I'm down to one of these two, but I've like some feedback about which approach is a better one to take:

```
PowerShell shell = PowerShell.Create();
shell.AddCommand(/* set initial state here? */);
shell.AddStatement();
shell.AddScript(myScript);
shell.Invoke(/* can set host! */);

```

or:

```
Runspace runspace = RunspaceFactory.CreateRunspace(/* can set host and initial state! */);
PowerShell shell = PowerShell.Create();
shell.Runspace = runspace;
shell.AddScript(myScript);
shell.Invoke(/* can set host here, too! */);

```

(One of the required `PSHost`-derived class methods is `EnterNestedPrompt()`, and I don't know whether the user-defined script I run could cause that to get called or not. If it can, then I'll be responsible for "starting a new nested input loop" ([as per here](http://msdn.microsoft.com/en-us/library/windows/desktop/system.management.automation.host.pshost.enternestedprompt(v=vs.85).aspx))... if that impacts which path to take above, that would also be good to know.)

Thanks!