Как перенаправить вывод Powershell из скрипта, запускаемого TaskScheduler, и переопределить стандартную ширину 80 символов - PullRequest
8 голосов
/ 21 декабря 2010

У меня есть скрипт powershell, который вызывается планировщиком задач. Определение задачи также перенаправляет вывод с помощью >> в файл журнала. Сценарий PowerShell вызывает консольную программу C #, которая генерирует выходные данные, длина которых превышает 80 символов. Тем не менее, результирующий вывод в файле журнала упаковывает все выходные данные из программы на C # в 80 символов. Обратите внимание, что переносится только вывод программы C #. Все остальные выходные данные скрипта (сгенерированные Write-Host) не переносятся. Также обратите внимание, что это перенос происходит только тогда, когда скрипт запускается планировщиком задач.

Вот цепочка вызова скрипта:

  • Определение задачи вызывает сценарий .cmd (RunWidthTest.cmd)

  • RunWidthTest.cmd: powershell -File. \ RunReports.ps1 >> C: \ Log \ output.log

  • RunReports.ps1 (фрагмент):

    Write-Host "========================================== ============= Запуск отчетов для файла дат для $ valueDate "

    . \ ReportRunner.exe --ValueDate $ valueDate | Из-умолчанию

Обратите внимание, что передача outout в Out-Default требуется, чтобы избежать другой ошибки powershell, возникающей из-за того, что вывод исполняемого файла пытается выполнить запись в тот же поток, что и сценарий powershell, без ведома powershell (* 1023) * Write-Host: позиция дескриптора ОС не соответствует ожидаемой FileStream. Не используйте одновременно дескриптор в одном FileStream и в коде Win32 или другом FileStream. Это может привести к потере данных. )

Таким образом, в данном случае строка, выводимая строкой Write-Host, не переносится, однако любой вывод, генерируемый ReportRunner.exe, переносится до 80 символов и происходит только при запуске с планировщиком задач! То же самое происходит при изменении точки, в которой происходит перенаправление, т. Е. При перенаправлении в определении задачи (командной строки задачи, а не внутри сценария)

Любые подсказки относительно того, почему это произойдет и как отменить это ограничение ширины.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 декабря 2010

Вы пробовали

| Out-File C:\Log\output.log -width 120 # or whatever size  you need
1 голос
/ 01 декабря 2016

Сценарист Гай на помощь!

Ссылка: Как мне увеличить ширину консоли Windows PowerShell

Это сработало для меня:

# Change the PS host parameters, so that log file width is wider than 80 characters
$PSHost  = Get-Host
$PSWindow = $PSHost.UI.RawUI
$PSBuffer = $PSWindow.BufferSize
$PSBuffer.Height = 3000
$PSBuffer.Width = 150
$PSWindow.BufferSize = $PSBuffer
$PSBuffer = $PSWindow.WindowSize
$PSBuffer.Height = 50
$PSBuffer.Width = 150
$PSWindow.WindowSize = $PSBuffer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...