Pla*_*fan 8 powershell logging redirect scheduled-tasks
我有一个由任务调度程序调用的powershell脚本.任务的定义还使用>>将输出重定向到日志文件.PowerShell脚本调用C#控制台程序,该程序生成宽度超过80个字符的输出.但是,日志文件中的结果输出将C#程序的所有输出都包装为80个字符.请注意,只包含C#程序的输出.脚本的所有其他输出(由Write-Host生成)不会被包装.另请注意,此包装仅在任务计划程序运行脚本时发生.
这是脚本调用链:
任务定义调用.cmd脚本(RunWidthTest.cmd)
RunWidthTest.cmd:powershell -File.\ RunReports.ps1 >> C:\ Log\output.log
RunReports.ps1(片段):
写主持人"============================================== ==========为$ valueDate运行日期文件的报告"
.\ ReportRunner.exe --ValueDate $ valueDate | 的Out-Default
请注意,需要将outout out to Out-Default以避免由于可执行文件的输出尝试写入与powershell脚本相同的流而没有PowerShell知道它而发生的另一个PowerShell错误(Write-Host:The OS句柄的位置不是FileStream所期望的.不要在一个FileStream和Win32代码或另一个FileStream中同时使用句柄.这可能会导致数据丢失.)
所以在这种情况下,Write-Host行输出的字符串不会被包装,但是,ReportRunner.exe生成的任何输出都被包装为80个字符,只有在使用任务调度程序运行时才会出现!如果您更改重定向发生的点,即如果您在定义中重定向任务(任务的命令行而不是脚本内),则会发生相同的行为
有关为什么会发生这种情况以及如何覆盖此宽度限制的任何线索.
谢谢.
你试过了吗
| Out-File C:\Log\output.log -width 120 # or whatever size you need
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11062 次 |
最近记录: |