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

3

我正在创建一个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!
1个回答

5

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


没错,这个可行。另一个挑战是同时写入和读取文件,但那是另一个问题。 - Yan Sklyarenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接