【发布时间】:2013-10-11 15:31:59
【问题描述】:
背景
- 带有 SDK 的 PowerShell 3
- 带有框架 4.5 的 C#
实施
我已经使用 PSHostUserInterface 实现了我自己的 PSHost 登录。 在 PSHostUserInterface 中,我覆盖了所有 Write... 方法并将其收集到一个用于输出的变量。
问题
在我的应用程序中,我调用了使用 WriteObject 作为其输出的 Cmdlet。在 PSHostUserInterface.Write... 方法中,我得到了除了这些 WriteObject 的输出之外的所有内容。 例如,我在常规 PowerShell 中看到了这一点:
这是命令输出的示例字符串
这里我们有来自 Cmdlet.WriteObject 函数的对象
这是命令输出的另一个字符串
这是我在应用程序的自定义 PSHost 中得到的:
这是命令输出的示例字符串
这是命令输出的另一个字符串
问题
如何在 C# 中获取 Cmdlet 的所有输出?
非常感谢
【问题讨论】:
-
通常
Pipeline.Invoke的返回值是管道输出的可枚举(对于错误输出,请使用同一Pipeline实例的Error属性)。因此,请使用您用于在主机中执行 PSH 管道的代码更新您的问题。 -
嗨,管道中根本没有
Error。我不能只是简单地Pipeline.Invoke,因为我的 CmdLets 需要 UI。正因为如此,通过自定义PSHost、PSHostUserInterface我可以覆盖用户交互并执行它们。
标签: c# powershell pshost