gpt4 book ai didi

powershell - 重定向标准和错误输出附加到同一日志文件

转载 作者:行者123 更新时间:2023-12-03 11:46:26 24 4
gpt4 key购买 nike

我需要将来自多个进程的标准输出和错误日志收集到一个日志文件中。

因此,每个输出必须追加到此日志文件。

我想用这样的行来调用所有作业:

$p=start-process myjob.bat -redirectstandardoutput $logfile -redirecterroroutput $logfile -wait

我必须在哪里添加信息?

最佳答案

为了附加到文件,您将需要使用略有不同的方法。您仍然可以将单个进程的标准错误和标准输出重定向到文件,但是为了将其附加到文件,您需要执行以下操作之一:

  • 读取Start-Process
  • 创建的stdout/stderr文件内容
  • 不使用开始进程并使用the call operator, &
  • 不使用Start-Process并使用.NET对象启动进程

  • 第一种方式如下所示:
    $myLog = "C:\File.log"
    $stdErrLog = "C:\stderr.log"
    $stdOutLog = "C:\stdout.log"
    Start-Process -File myjob.bat -RedirectStandardOutput $stdOutLog -RedirectStandardError $stdErrLog -wait
    Get-Content $stdErrLog, $stdOutLog | Out-File $myLog -Append

    第二种方式如下所示:
    & myjob.bat 2>&1 >> C:\MyLog.txt

    或这个:
    & myjob.bat 2>&1 | Out-File C:\MyLog.txt -Append

    第三种方式:
    $pinfo = New-Object System.Diagnostics.ProcessStartInfo
    $pinfo.FileName = "myjob.bat"
    $pinfo.RedirectStandardError = $true
    $pinfo.RedirectStandardOutput = $true
    $pinfo.UseShellExecute = $false
    $pinfo.Arguments = ""
    $p = New-Object System.Diagnostics.Process
    $p.StartInfo = $pinfo
    $p.Start() | Out-Null
    $p.WaitForExit()
    $output = $p.StandardOutput.ReadToEnd()
    $output += $p.StandardError.ReadToEnd()
    $output | Out-File $myLog -Append

    关于powershell - 重定向标准和错误输出附加到同一日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66550575/

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