gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:01:34 29 4
gpt4 key购买 nike

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

因此每个输出都必须附加到此日志文件。

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

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

我必须在哪里添加附加信息?

最佳答案

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

  1. 读取由Start-Process创建的stdout/stderr文件内容
  2. 不使用 Start-Process 并使用 the call operator, &
  3. 不使用 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/8925323/

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