如何在PowerShell二进制模块中捕获外部DLL的控制台输出?

如何在PowerShell二进制模块中捕获外部DLL的控制台输出?,powershell,powershell-2.0,Powershell,Powershell 2.0,我正在创建一个PowerShell二进制模块,它使用第三方库(DLL),输出到控制台。所以,基本上我希望我的二进制模块输出它自己的消息和DLL的控制台输出 可能吗 因此,假设第三方API执行以下操作: public static void SomeMethod() { ... Console.Write("Extracting the file..."); ... } 二进制模块将其称为: protected override void ProcessRecord() { ..

我正在创建一个PowerShell二进制模块,它使用第三方库(DLL),输出到控制台。所以,基本上我希望我的二进制模块输出它自己的消息和DLL的控制台输出

可能吗

因此,假设第三方API执行以下操作:

public static void SomeMethod() {
  ...
  Console.Write("Extracting the file...");
  ...
}
二进制模块将其称为:

protected override void ProcessRecord() {
  ...
  this.WriteObject("Hello!");
  SomeClass.SomeMethod();
  this.WriteObject("Goodbye!");
}
我看到的结果是:

Hello!
Goodbye!
我想看到的是:

Hello!
Extracting the file...
Goodbye!

请看一下将当前进程的标准输出临时设置为可从中读取的文本编写器的方法。调用DLL后,您将使用Console.OpenStandardOutput()将标准输出重置回默认值。请看“设置主题”页面上的示例。

谢谢您的想法,Keith!我来试一试。是的,很有效。另一个挑战是同时写入和读取文件,但这是另一个问题。