gpt4 book ai didi

logging - 如何从 TaskScheduler 运行的脚本重定向 Powershell 输出并覆盖 80 个字符的默认宽度

转载 作者:行者123 更新时间:2023-12-02 15:47:36 34 4
gpt4 key购买 nike

我有一个由任务计划程序调用的 powershell 脚本。该任务的定义还使用 >> 将输出重定向到日志文件。 PowerShell 脚本调用 C# 控制台程序,该程序生成宽度超过 80 个字符的输出。但是,日志文件中的结果输出将 C# 程序的所有输出包装为 80 个字符。请注意,仅包装 C# 程序的输出。脚本的所有其他输出(由 Write-Host 生成)不会被包装。另请注意,这种包装仅在任务计划程序运行脚本时发生。

这是脚本调用链:

  • 任务定义调用 .cmd 脚本 (RunWidthTest.cmd)

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

  • RunReports.ps1(片段):

    写主机“============================================== ============= 为 $valueDate 的日期文件运行报告

    .\ReportRunner.exe --ValueDate $valueDate |超出默认

请注意,需要将输出通过管道传输到 Out-Default,以避免由于可执行文件的输出尝试写入与 powershell 脚本相同的流而 powershell 不知道而发生另一个 powershell 错误(Write-Host : 操作系统句柄的位置不是 FileStream 期望的位置。不要同时使用句柄在一个 FileStream 和 Win32 代码或另一个 FileStream 中。这可能会导致数据丢失。)

因此,在这种情况下,Write-Host 行输出的字符串不会被换行,但是,ReportRunner.exe 生成的任何输出都会被换行为 80 个字符,并且仅在使用任务计划程序运行时才会发生!如果您更改重定向发生的点,即如果您在定义中重定向任务(任务的命令行而不是脚本内),则会发生相同的行为

关于为什么会发生这种情况以及如何覆盖此宽度限制的任何线索。

谢谢。

最佳答案

你尝试过吗

| Out-File C:\Log\output.log -width 120 # or whatever size  you need

关于logging - 如何从 TaskScheduler 运行的脚本重定向 Powershell 输出并覆盖 80 个字符的默认宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499182/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com