2015-10-06 87 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寫入屏幕(連同尾隨換行符)