我想知道是否有可能获得引用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
答案 0 :(得分:2)
(注意: PowerShell ISE不使用控制台,因此写入流也不会产生任何影响。)
尝试阅读标准输出流不会让你到任何地方,它的意思是写东西。
也不会检查长度,因为标准输出编写器会立即拾取任何输入并将其写入屏幕缓冲区。
在基于控制台的主机(即powershell.exe
)中尝试此操作:
$TestBytes = "Test`n".ToCharArray() -as [byte[]]
$OutStream = [console]::OpenStandardOutput()
$OutStream.Write($TestBytes,0,$TestBytes.Length)
您应该看到字符串Test
被写入屏幕(以及尾随换行符)