我正在尝试从 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 的工作方式。这个链接在这里,如何通过自动化运行 PowerShell 脚本而不遇到主机问题,似乎建议创建一个写入主机函数并将其注入运行空间或在应用程序中实现 powershell 托管接口。任何关于如何做到这一点的代码示例都会非常有帮助。
我在这里提到了一个类似的问题Running a powershell command in C# errors with, "Cannot invoke this function because the current host does not implement it"这建议使用-Confirm:$false
-Force
但我有兴趣看看如何通过实现 PSHost 来解决这个问题, PSHostUserInterface 和 PSHostRawUserInterface。如果有人可以提供有关如何完成此操作的代码示例,那将非常有用。