krs*_*krs 5 c# powershell pshost
我已经用PSHostUserInterface实现了我自己的PSHost alogn。在PSHostUserInterface 中,我覆盖了所有Write...方法并将其收集到一个用于输出的变量。
在我的应用程序中,我调用了使用WriteObject作为输出的Cmdlets。在PSHostUserInterface.Write...方法中,我得到了除这些WriteObject输出之外的所有内容。例如,我在常规 PowerShell 中看到了这一点:
这是命令的示例字符串输出
这里我们有来自 Cmdlet.WriteObject 函数的对象
这是命令的另一个字符串输出
这是我在我的应用程序中的自定义 PSHost 中得到的:
这是命令的示例字符串输出
这是命令的另一个字符串输出
如何在 C# 中获取 Cmdlet 的所有输出?
非常感谢
我认为理查德的评论是对的。如果您使用 调用 cmdlet Pipeline.Invoke(),则必须:
Out-Default或Out-Default到原始管道即可。这将告诉 PowerShell 将输出发送到显示器(并使用默认格式)。 通常,当您将管道输出的结果对象存储在 PowerShell 变量中$res = Get-Process或 C# 中作为 的输出时Invoke(),您正在处理实际的 .NET 对象。如果未捕获管道输出,则 PowerShell 将为您执行的另一个步骤是将这些对象格式化并渲染到主机。在这种情况下,PowerShell 有效地将 a 附加| Out-Default到管道。