我目前正在使用PowerShell 5.0 SDK编写C#cmdlet。Cmdlet详细流
我试图将“第三方可执行文件的StandardError”管道从“实时”从powershell运行时输出到cmdlet输出。
我目前使用MedallionShell库来处理运行过程。我已经用普通的C#win窗体尝试了这一点,并使用Command.StandardError.PipeToAsync(Console.OpenStandardOutput())来获取打印输出,因为可执行文件以“实时”方式将其生成到控制台。
我试图创建我自己的Stream对象,它调用WriteVerbose,但它似乎没有打印任何东西到powershell屏幕(我正在传递-Verbose到cmdlet,当我运行它)。
我的电流看起来是这样的:
- 打开PowerShell ISE中
- 加载我模块(C#DLL)
- 叫我的cmdlet和参数
- Command.Run
- Command.StandardError.PipeToAsync(???)
- Command.Wait(在此步骤中,o输出应该流向PowerShell窗口)
- 检查Command.Result.Success。
任何人都可以点我在这个正确的方向?
难道你自己'Stream'实现通话'WriteVerbose'直接或他们元帅管线螺纹? – PetSerAl
我的流的实现采用了该cmdlet并用它来调用WriteVerbose。我从Write调用收到的字节,我使用Encoding.UTF8.GetString(字节)转换为字符串。 –
这不是我问的问题。你不能在任意线程上调用'WriteVerbose'。那么,你是否调用了'WriteVerbose'回到管道线程? – PetSerAl