2015-10-17 71 views
0

这里是一块功能我试图创造,使我的测试速度快:PowerShell的功能outputing意想不到的额外的换行符

function t++ { 
    param($Source, $Input, $Output) 
    ... 
    g++ $Source -o test; 
    .\test.exe 
    Write-Output "===End-Of-Output===" 
} 

但在我的Windows PowerShell ISE输出当属:

Hello, World! 
===End-Of-Output=== 
\n 

(最后一行是空的)

我不明白为什么它会在输出结束后输出额外的换行符。

+2

这是你在壳中观察到的东西吗?或者当你输出到一个文件?如果是这样,你是如何输出到一个文件? PowerShell的格式化子系统喜欢在输出到主机时添加额外的空间(在您的情况下,可能是控制台) –

+1

我无法复制此内容。你能否确定你没有离开这个功能,并显示你是如何调用它的?它被称为任何其他功能? – briantist

+0

Aww该死的!我很抱歉,我在Windows PowerShell ISE中测试了这一点。 现在我在实际的PowerShell中测试它,它工作正常。应该进行双重检查......但为什么PowerShell ISE会以不同的方式输出它? – VillasV

回答

2

当输出写入PowerShell的标准输出流时,它被Host application拾取 - 主机应用程序可以格式化和操作输出。

powershell.exe情况下,这将是System.Console,使串输出,但PowerShell主机应用程序不一定Console为基础的。

PowerShell ISE,例如,不使用System.Console,因为输出窗格也是您的调试器 - 我假设PowerShell开发团队发现实现新的输出机制更容易,而不是延伸Console