如何在Powershell中获取输出流?

时间:2015-10-06 19:50:36

标签: c# .net powershell

我想知道是否有可能获得引用Powershell控制台窗口的流(在Powershell中),假设存在一个。例如,在C#.NET中,它只需Console.OpenStandardOutput()即可完成。在Powershell中是否存在等价物?

我要做的是创建一个System.IO.BinaryWriter来写入它而不是使用Write-Host等,主要用于实验。

我已经尝试了[Console]::OpenStandardOutput(),但这给了我一个空的流,让我觉得另一个用于Powershell。

我正在使用Powershell V5.0:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10240  16384   

1 个答案:

答案 0 :(得分:2)

注意: PowerShell ISE不使用控制台,因此写入流也不会产生任何影响。)

尝试阅读标准输出流不会让你到任何地方,它的意思是写东西。

也不会检查长度,因为标准输出编写器会立即拾取任何输入并将其写入屏幕缓冲区。

在基于控制台的主机(即powershell.exe)中尝试此操作:

$TestBytes = "Test`n".ToCharArray() -as [byte[]]
$OutStream = [console]::OpenStandardOutput()
$OutStream.Write($TestBytes,0,$TestBytes.Length)

您应该看到字符串Test被写入屏幕(以及尾随换行符)