【问题标题】:RedirectStandardError $logFile with Append?带有附加的 RedirectStandardError $logFile?
【发布时间】:2020-03-28 22:15:18
【问题描述】:

我有一个 PowerShell 脚本,我在其中使用 Start-Process 并将输出重定向到日志文件。 cmd 在 for 循环中,我希望每次运行时都附加输出。现在它每次运行时都会清除日志文件。有没有办法重定向和追加?

Start-Process $cmd -ArgumentList $cmdArgs -RedirectStandardError $logFile -Wait -NoNewWindow

【问题讨论】:

    标签: powershell logging append start-process


    【解决方案1】:

    注意:同步执行控制台应用程序直接调用c:\path\to\some.exe ...& $exePath ...),执行不使用Start-Process - 见this answer;这样,您可以使用$ouput = c:\path\to\some.exe ... 直接捕获它们的输出,或使用>> 或通过管道将它们的输出附加到现有文件Add-Content[1] -见about_Redirection

    • 结合使用重定向2>&1>> $logFile捕获标准错误输出以及标准输出。
    & $cmd $cmdArgs 2>&1 >> $logFile
    
    • 使用重定向2>> $logFile 来捕获标准错误输出。
    & $cmd $cmdArgs 2>> $logFile
    

    这个答案的其余部分解决了问题


    不,(从 PowerShell 7.0 开始)无法追加到带有 Start-Process'
    -RedirectStandardOutput-RedirectStandardError 参数的预先存在的文件
    -他们总是替换指定的输出文件。

    This answer 展示了如何直接使用底层 .NET API,允许您收集进程的输出在内存中,然后允许您将其附加到现有文件(例如,使用
    Add-Content)。

    但是,正如your own answer 所示,使用带有
    -RedirectStandardError 的辅助临时文件(其内容稍后会附加到整个输出文件)可能是最简单的解决方案。


    [1] >> 盲目应用 Out-File 的默认编码,即 Windows PowerShell 中的 UTF-16LE(“Unicode”)和无 BOM 的 UTF-8在 PowerShell [核心] 6+ 中;相比之下,Add-Content 会尝试匹配目标文件预先存在的编码。

    【讨论】:

      【解决方案2】:

      感谢大家的回复。我决定采用自己的替代方案,即将每个 Start-Process 作业的输出发送到临时日志文件,然后将临时日志文件中的数据复制到我的主日志文件中。几乎没有那么优雅,但足够简单并且有效。

      $logFile = "C:\work\myLogFile.log"
      $logFileTemp = "C:\work\myTempLogFile.log"
      Start-Process $cmd -ArgumentList $cmdArgs -RedirectStandardError $logFileTemp -Wait -NoNewWindow
      Get-Content $logFileTemp | Out-File $logFile -Append
      

      【讨论】:

        【解决方案3】:

        如果你可以直接调用 cmd,你可以试试2>>

        &$cmd 2>> $logFile
        

        详情请见SS64

        command 2>> filename # 将错误追加到文件

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-28
          • 2011-08-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多