Как перенаправить вывод Powershell из сценария, запускаемого TaskScheduler, и переопределить ширину по умолчанию 80 символов

У меня есть сценарий 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 | Out-Default

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

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

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

Спасибо.

8
задан Plastikfan 21 December 2010 в 12:22
поделиться