调试PowerShell脚本

时间:2014-05-21 17:13:00

标签: c# debugging powershell

我有兴趣开发一个处理数据的C#应用​​程序,并帮助过滤我计划通过PowerShell将部分应用程序公开为解释脚本的数据。我认为我已经很好地掌握了如何实现这一点( How to run PowerShell scripts from C# ),但提供PowerShell ISE中提供的调试功能非常有价值。有没有办法将ISE(或类似的调试器)附加到C#程序中托管的PowerShell脚本?

这背后的部分原因是一些组件本质上是固定的灵活性,因此编译的C#可执行文件,但其中一些需要在运行时轻松更改。我设想了一个DataTable或List<>从C#传递到PowerShell,具有类似于将解析数据的脚本的返回值。

2 个答案:

答案 0 :(得分:2)

目前无法将能够调试PowerShell的调试器附加到任意主机进程。

可以实现自己的调试器 - 必要的钩子是公共的,但这是一项非常重要的任务 - 您需要实现UI - 您调用api来设置断点,然后PowerShell会在调用时调用断点被击中,此时你决定做什么(例如等待用户说"去"或"步"。)

答案 1 :(得分:0)

@Jason Shirk关于调试器是正确的。但是,不是实现自己的,你可以使用一些现有的。例如,一个简单的调试器实现为包含在NuGet包NuGetDebugTools中的脚本。尽管名称调试器适用于任何主机(特别是,NuGet控制台没有实现自己的调试器)。请注意,其UI 非常简约,有点类似于MS PS控制台调试器。但它是可行的,它比没有调试器好。

我希望这个提示可能对调试很有用,或者作为实现自己的提示的起点。但看起来您实际上正在寻找与当前PowerShell会话/运行空间相关的外部控制台式窗口(不一定是基于控制台),您可以在其中探索暴露的对象并进行更改。我认为,在理想世界中,ISE可以提供它。但它目前没有。