2015-10-06 81 views
2

我想知道是否有可能获取引用Powershell控制台窗口(在Powershell中)的流,假设存在。例如,在C#.NET中,只需执行Console.OpenStandardOutput()。 Powershell中是否有等价物?如何在Powershell中获取输出流?

我正在做的是创建一个System.IO.BinaryWriter写入它而不是使用写主机或类似的东西,主要用于实验。

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

我使用PowerShell V5.0工作:

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

“,让我是一个空的流“ - 你想从中读取吗?这是一个输出流,你应该写入它 –

+0

我正在尝试写入它。我读了它,做了一个'.Length'来看看我拿到它的时候在里面有什么。由于基本管道输出涵盖了屏幕,我认为它不应该是空的。不过,我不知道我是否在使用ISE。 – ZethMatthews

回答

2

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

试图从标准输出流中读取不会让你在任何地方,这是为了写东西。

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

在基于控制台的主机试试这个(即powershell.exe):

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

你应该看到字符串Test写入屏幕(连同尾随换行符)

相关问题