Вызов PowerShell из MSBuild разрывает длинные строки текста. - PullRequest
3 голосов
/ 01 марта 2011

У меня есть скрипт MSBuild, который вызывает скрипт PowerShell.Вывод сценария PS содержит несколько длинных строк, и некоторые из них (но не все) разбиты на несколько строк, например.

wait-untilOpCompleted : Cannot bind argument to parameter 'operationId' because
   it is null.

Как мне помешать этому?Я просто хочу одну длинную линию, например:

1005 *

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Самый простой способ предотвратить разрыв строк в PowerShell в зависимости от ширины консоли - переопределить реализацию по умолчанию Out-Default в верхней части сценария, например:

filter Out-Default { 
   $input | Out-String -Width 500 -Stream | 
            Microsoft.PowerShell.Utility\out-default 
}
0 голосов
/ 05 сентября 2011

Кит ответ кажется менее навязчивым. Однако, если вы не смогли заставить его работать, вы могли бы попробовать еще раз вручную установить ширину хоста. От предыдущего ответа :

# 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
}

Он просто устанавливает новую ширину в 500 символов в выходном буфере RawUI хоста (хотя, поскольку мы запускаем нашу сборку в нескольких средах, и мы не хотели, чтобы скрипт не работал, просто потому, что он не мог сделать вывод немного больше код довольно оборонительный).

Если вы работаете в среде, которая всегда устанавливает RawUI (и большинство так делают), код может быть значительно упрощен:

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