ac# プログラムから PowerShell コマンドを実行しようとすると、「現在のホストが実装していないため、関数を呼び出すことができません」という例外が発生します。
ac# プログラムから PowerShell コマンドを実行しようとすると、「現在のホストが実装していないため、関数を呼び出すことができません」という例外が発生します。
これが私が実行していることです…</p>
public string RunScript(string cmd)
{
var initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new[] { @"C:\Intellitrace\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll" });
var runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
RunspaceInvoke invoker = new RunspaceInvoke(runspace);
// results =
invoker.Invoke(
@"Start-IntelliTraceCollection ""DefaultAppPool"" C:\Intellitrace\collection_plan.ASP.NET.trace.xml C:\IntellitraceLogs");
コマンド Start-IntelliTraceCollection は、IIS インストルメンテーション中に Cmdlet.Write* を使用して詳細なログを書き込みます。例外を引き起こしているのは write-host の動作方法だと思います。このリンクは、How to run PowerShell scripts via Automation without running into Host issuesでは、書き込みホスト関数を作成してそれを実行空間に挿入するか、アプリに PowerShell ホスティング インターフェイスを実装することを推奨しているようです。これを行う方法に関するコードサンプルは非常に役立ちます。
ここで同様の質問を参照しました C#でpowershellコマンドを実行すると、「現在のホストが実装していないため、この関数を呼び出すことができません」というエラーが表示されますが、 PSHostを実装すること-Confirm:$false
でForce
これを修正する方法に興味があります、PSHostUserInterface および PSHostRawUserInterface です。これを行う方法についてコードサンプルを提供できる人がいれば、非常に便利です。