Подробный вывод для записи, который не переносится на ширину команды в Powershell - PullRequest
6 голосов
/ 05 ноября 2010

Я бы хотел Write-Verbose много данных в файл. Вот как я это делаю.

Start-Transcript -Path $TargetDir\RunUnitTests.log -Width 1000000
Write-Verbose "five million character lines and stuff"

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

Я нашел решение здесь мертвая ссылка удалена , но это настолько запутанно и сложно, что я не хочу просто добавить это в свой скрипт под комментарием #Thar be dragons.

Есть ли лучший способ сделать это?

1 Ответ

5 голосов
/ 05 ноября 2010

Вот очень простой обходной путь, основанный на Write-Host, у которого нет такой проблемы.В начале сеанса установите / dot-source замену по умолчанию Write-Verbose:

function global:Write-Verbose
(
    [string]
    $Message
)
{
    # check $VerbosePreference variable
    if ($VerbosePreference -ne 'SilentlyContinue') {
        # do this via Write-Host
        Write-Host "VERBOSE: $Message" -ForegroundColor 'Yellow'
    }
}

Тогда это будет работать по мере необходимости:

$VerbosePreference = 'Continue'
Start-Transcript -Path .\RunUnitTests.log
Write-Verbose ("verbose writes five million character lines and stuff. " * 20)

То есть: принимаетучетная запись $VerbosePreference, она пишет на хост в желтом цвете, вывод транскрипта не переносится и все еще помечается как VERBOSE.

**********************
Windows PowerShell Transcript Start
Start time: 20101105055855
**********************
Transcript started, output file is .\RunUnitTests.log
VERBOSE: verbose writes ... <long line text> ... and stuff.
**********************
Windows PowerShell Transcript End
End time: 20101105055855
**********************
...