私のアプリケーションではかなり限られたPowerShellサポートを追加しようとしています。ユーザー定義のPowerShellスクリプトを定期的に実行し、進行通知とユーザー・プロンプト要求を処理できるようにします。 I は、コマンドラインスタイルの対話式サポートが必要です。または、リモートスクリプトや複数の同時スクリプトを実行する機能が必要です。私は最終的にスクリプトを非同期に実行するか、バックグラウンドスレッドで実行したいと思うでしょう。おそらくシェルにいくつかの初期変数をつけてかもしれません。おそらくコマンドレットですが、この機能はおそらく得意です。Hosting PowerShell:PowerShellとRunspaceとRunspacePoolとパイプラインとの比較
私はMSDN documentation about writing host application codeを読んでてきたが、それは喜んPowerShell
オブジェクト、またはRunspace
、またはRunspacePool
、またはPipeline
を作成する方法をを説明しながら、 1が終わっこれらのアプローチのいずれかを選ぶだろうについてなぜ兆候はありません別の
私はが、私はこれらの2の1までだけど、私はアプローチが取るよりよい1であるかについてのいくつかのフィードバックのようにしたと思う:
PowerShell shell = PowerShell.Create();
shell.AddCommand(/* set initial state here? */);
shell.AddStatement();
shell.AddScript(myScript);
shell.Invoke(/* can set host! */);
か:
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! */);
(要求された由来のクラスメソッドの1つがEnterNestedPrompt()
であり、私が実行するユーザー定義スクリプトが呼び出されるかどうかはわかりません。できる場合は、 "開始新しいネストされた入力loo p "(as per here)...これが上に向かう経路に影響する場合は、それも知っておくと良いでしょう)
ありがとう!
実際にはホストは必要ありません。 Write-Host、Read-Hostなどの呼び出しを避けるようにしてください。PSにホストが接続されているかどうかを確認する方法はありますが、現時点ではそれを思い出しません。 –
私はPSHostを_need_していないかもしれませんが、私の場合、私はそれを望んでいます...私は、ユーザ定義のスクリプトが私が見せたい時々の診断メッセージを持つことを期待しています。 (元の投稿を編集して、それをより明確にします) – JaredReisinger