如何在Powershell中获得输出流?

本文关键字:输出流 Powershell | 更新日期: 2023-09-27 18:16:14

我想知道是否有可能获得指向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   

如何在Powershell中获得输出流?

(注意: PowerShell ISE不使用控制台,所以写入流也不会有任何效果)

尝试从标准输出流中读取不会让你得到任何东西,它意味着写东西到。

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

在一个基于控制台的主机(例如。powershell.exe):

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

您应该看到字符串Test被写入屏幕(连同一个尾随的换行符)