Powershell输出列宽

时间:2009-06-11 00:32:26

标签: powershell console

如果我有可执行文件out.exe并且stdout被重定向到文件, 即:

out.exe > $file

现在,如果我这样做,它只输出:

<-----------------------------> 
80 columns per line to the file

有没有办法让控制台列数中的标准输出更宽? 它是out.exe以某种方式弄乱列吗? 就我而言,我正在使用fxcopcmd.exe

4 个答案:

答案 0 :(得分:40)

我前一段时间遇到过类似的问题。以下是我为解决这个问题所做的工作:

# Update output buffer size to prevent clipping in Visual Studio output window.
if( $Host -and $Host.UI -and $Host.UI.RawUI ) {
  $rawUI = $Host.UI.RawUI
  $oldSize = $rawUI.BufferSize
  $typeName = $oldSize.GetType( ).FullName
  $newSize = New-Object $typeName (500, $oldSize.Height)
  $rawUI.BufferSize = $newSize
}

它只是在主机的RawUI输出缓冲区上设置了500个字符的新宽度(但是,因为我们在几个环境中运行我们的构建,并且我们不希望脚本失败只是因为它无法使输出更大,代码是相当防守的。)

如果你在一个总是设置RawUI的环境中运行(大多数都这样做),代码可以大大简化:

$Host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size (500, 25)

答案 1 :(得分:11)

out-fileout-string cmdlet都有一个width参数:

out.exe | out-file -width 132 -filePath $file

答案 2 :(得分:0)

如果您正在谈论Windows PowerShell - 只需打开“属性&gt;布局”增加缓冲区大小+窗口大小

enter image description here

答案 3 :(得分:-1)

在我的powershell脚本中,我将第一行设置为不进行回车 第二行我手动做了回报。

(在一个循环中)

Write-Host -nonewline "$var1;$var2"

Write-Host "`r"

这使得我的线被包裹但在每个单独的记录之后仍然返回时覆盖了这个问题。