我有一个调用PowerShell脚本的MSBuild脚本。 PS脚本的输出包含一些长行,其中一些(但不是全部)被分成多行,例如。
wait-untilOpCompleted : Cannot bind argument to parameter 'operationId' because
it is null.
如何阻止它这样做?我只想要一条长线,例如:
wait-untilOpCompleted : Cannot bind argument to parameter 'operationId' because it is null.
答案 0 :(得分:3)
阻止PowerShell根据控制台宽度打破行的最简单方法是覆盖脚本顶部的Out-Default
的默认实现,如下所示:
filter Out-Default {
$input | Out-String -Width 500 -Stream |
Microsoft.PowerShell.Utility\out-default
}
答案 1 :(得分:0)
Keith的答案似乎不那么具有侵扰性。但是,如果您无法使其工作,您可能尝试的另一件事是手动设置主机的宽度。来自previous answer:
# 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)