如何将控制台输出重定向到模块中的PowerShell输出?

时间:2017-09-16 16:08:26

标签: powershell powershell-module

如果我正在编写二进制PowerShell模块,并且碰巧使用写入STDOUT(Console.Out)的.NET库 - 是否有推荐的方法重新路由控制台输出到PowerShell的输出流?

我可以通过Console.Out设置我自己的TextWriter来拦截Console.SetOut(...),然后用它做一些事情(即我可以用StringWriter缓冲输出并写下来在未来的某些时候,或者我可以编写一个自定义TextWriter,将所有Write命令发送到PowerShell的WriteObject)。

我的问题是,是否有一些标准或推荐的做法可以在PowerShell库中执行此操作或某些内置工具?

2 个答案:

答案 0 :(得分:0)

我通过GitHub询问了PS团队的问题,一般的回答是TextWriter-to-WriteObject方法是一种合理的方法:https://github.com/PowerShell/PowerShell/issues/4849

答案 1 :(得分:0)

如果要输出到管道,请使用WriteObject()WriteInformation()WriteDebug()WriteWarning()会向主机收到消息(字符串)。